API文档中提到:
calendarField 属性的值必须是在 Calendar 内指定某个字段的其中一个 java.util.Calendar 常量。getNextValue 和 getPreviousValue 方法将日期向前或向后更改这些量。例如,如果 calendarField 为 Calendar.DAY_OF_WEEK,则 nextValue 生成一个比当前 value 延后 24 小时的 Date,而 previousValue 则生成一个提前 24 小时的 Date。
为什么对calendarField的值进行修改后,上下按微调控制器都看不出变化呢?
只有调整鼠标所在位置,上下微调时会改变鼠标所在日历字段的值。
- import java.awt.BorderLayout;
- import java.awt.event.ActionEvent;
- import java.awt.event.ActionListener;
- import java.util.Calendar;
- import java.util.GregorianCalendar;
- import javax.swing.JButton;
- import javax.swing.JFrame;
- import javax.swing.JLabel;
- import javax.swing.JPanel;
- import javax.swing.JSpinner;
- import javax.swing.SpinnerDateModel;
- public class Demo{
- public static void main(String[] args){
- SpinnerTest spinner = new SpinnerTest();
- spinner.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- spinner.setVisible(true);
- }
- }
- class SpinnerTest extends JFrame{
- SpinnerTest(){
- setTitle( "SpinnerTest" );
- setSize( 400, 100 );
- JPanel buttonPanel = new JPanel();
- okButton = new JButton("OK");
- buttonPanel.add( okButton );
- add(buttonPanel, BorderLayout.SOUTH);
- mainPanel = new JPanel();
- add(mainPanel, BorderLayout.CENTER);
- //SpinnerDateModel(Date value, Comparable start, Comparable end, int calendarField)
- //修改calendarField字段,微调控制器上下调整都看不出变化呢?
- JSpinner timeSpinner = new JSpinner(new SpinnerDateModel(
- new GregorianCalendar(2000,Calendar.JANUARY,1,12,0,0)
- .getTime(),null,null,Calendar.DAY_OF_WEEK));
- addRow("Time",timeSpinner);
- }
-
- private void addRow(String labelText, final JSpinner spinner) {
- mainPanel.add(new JLabel(labelText));
- mainPanel.add(spinner);
- final JLabel valueLabel = new JLabel();
- mainPanel.add(valueLabel);
- okButton.addActionListener(new ActionListener(){
- public void actionPerformed(ActionEvent e){
- Object value = spinner.getValue();
- valueLabel.setText(value.toString());
- }
- });
- }
-
- private JButton okButton;
- private JPanel mainPanel;
- }
复制代码 |