简体   繁体   中英

SpinnerDateModel produces "MONTH/DAY/YEAR, HOURS:MINS AM/PM" no matter what calendarField I input

JFrame frame = new JFrame();
frame.setSize(256,256);
frame.setLayout(null);

SpinnerDateModel dateModel = new SpinnerDateModel(new Date(), null, null, Calendar.DAY_OF_MONTH);
JSpinner spinner = new JSpinner(dateModel);
spinner.setBounds(0,0, 125,45);

frame.add(spinner);
frame.setVisible(true);

whether I use Calendar.DAY_OF_MONTH or any other field I get the exact same result.

this is what I get , which I don't want. I only need "MONTH/DAY/YEAR".

A JSpinner has a setEditor method that edits the date field.

Here's the complete runnable code example.

import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.util.Calendar;
import java.util.Date;

import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JSpinner;
import javax.swing.SpinnerDateModel;
import javax.swing.SwingUtilities;

public class SpinnerDateModelExample implements Runnable {

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new SpinnerDateModelExample());
    }

    @Override
    public void run() {
        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        
        frame.add(createMainPanel(), BorderLayout.CENTER);
        
        frame.pack();
        frame.setLocationByPlatform(true);
        frame.setVisible(true);
    }
    
    private JPanel createMainPanel() {
        JPanel panel = new JPanel(new FlowLayout());
        panel.setBorder(BorderFactory.createEmptyBorder(0, 5, 5, 5));
        
        Date currentDate = new Date();
        SpinnerDateModel dateModel = new SpinnerDateModel(
                currentDate, null, null, Calendar.DAY_OF_MONTH);
        JSpinner spinner = new JSpinner(dateModel);
        spinner.setEditor(new JSpinner.DateEditor(spinner, "M/d/yyyy"));
        panel.add(spinner);
        
        return panel;
    }

}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM