SpinnerDateModel(Date,Comparable,Comparable,int step)
step设置无效,
默认为"Calendar.DAY_OF_MONTH"
我不管设为什么,在JSpinner里面点击向上或向下键,它一律都是按年增加(或者减少)1
但我打印出SpinnerDateModel.getCalendarField()的值又是正确的,为什么不能控制JSpinner呢
step设置无效,
默认为"Calendar.DAY_OF_MONTH"
我不管设为什么,在JSpinner里面点击向上或向下键,它一律都是按年增加(或者减少)1
但我打印出SpinnerDateModel.getCalendarField()的值又是正确的,为什么不能控制JSpinner呢
import java.awt.event.*;
import java.text.*;
import java.util.*;
import javax.swing.*;/**
A program to test spinners.
*/
public class SpinnerTest
{
public static void main(String[] args)
{
SpinnerFrame frame=new SpinnerFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.show();
}
}/**
A frame with a panel that contains several spinners and a button that displays the spinner values.
*/
class SpinnerFrame extends JFrame
{
public SpinnerFrame()
{
setTitle("SpinnerFrame");
setSize(DEFAULT_WIDTH,DEFAULT_HEIGHT); Container contentPane=getContentPane(); JPanel buttonPanel=new JPanel();
okButton=new JButton("Ok");
buttonPanel.add(okButton); contentPane.add(buttonPanel,BorderLayout.SOUTH); mainPanel=new JPanel();
mainPanel.setLayout(new GridLayout(0,3)); contentPane.add(mainPanel,BorderLayout.CENTER); //问题:以下这条语句中的Calendar.SECOND没有起到作用,步长仍然为YEAR,但用getCalenderField方法得到的值又是Calendar.SECOND;
//或者改为其它任何CalendarField值也不行,都不能使点击箭头按钮 增加、减少 的量改为相对应的值
JSpinner betterDateSpinner=new JSpinner(new SpinnerDateModel());
SpinnerDateModel spinnerDateModel=(SpinnerDateModel)betterDateSpinner.getModel();
spinnerDateModel.setCalendarField(Calendar.SECOND);
String pattern=((SimpleDateFormat)DateFormat.getDateTimeInstance()).toPattern();
betterDateSpinner.setEditor(new JSpinner.DateEditor(betterDateSpinner,pattern));
System.out.println("betterDateSpinner getModel: "+betterDateSpinner.getModel());
System.out.println("spinnerDateModel getCalendarField: "+spinnerDateModel.getCalendarField());
addRow("Better Date",betterDateSpinner);
} /**
Adds a row to te main panel.
@param labelText the label of the spinner
@param spinner the sample spinner
*/
public 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 event)
{
Object value=spinner.getValue();
valueLabel.setText(value.toString());
}
});
} private static final int DEFAULT_WIDTH=600;
private static final int DEFAULT_HEIGHT=100; private JPanel mainPanel;
private JButton okButton;
}