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;
}
}