没有太多要添加到标题问题。
这是跳到第一个框的样子,将光标放在该字段的第一个字符之前,以便用户如果希望输入自己的月,日或年,则必须删除该字符:
这是我想要的,当将该字段制表到(或以其他方式选中)时,这样,如果用户希望输入自己的年份,则不必删除显示的字符,等等:
我可以为JTextField
这样实现,例如:
txtDateFrom.select(0,99);
但是
.select()
不是JSpinner
的方法。(我意识到这提出了一个问题,“为什么使用微调器?”,但显而易见的答案是,我希望这两种选择方法都可以使用,这在设计中很常见。)
(不那么紧迫,但相关的事情……我制作了一个由100个年日期[例如,2014年]组成的整数数组,名称为
years
,并使用了SpinnerListModel(years)
,因为当使用SpinnerNumberModel
时,一年将显示为2,014我可以继续做下去,但是有没有那么简单的方法呢?没有一种方法可以找到包含“格式”的方法。) 最佳答案
这适用于Windows和Linux中的Java 1.7.0_51。我没有能力在OS X中对其进行测试。
JSpinner.DefaultEditor editor =
(JSpinner.DefaultEditor) spinner.getEditor();
editor.getTextField().addFocusListener(new FocusAdapter() {
@Override
public void focusGained(FocusEvent event) {
final JTextField textField = (JTextField) event.getComponent();
EventQueue.invokeLater(new Runnable() {
public void run() {
EventQueue.invokeLater(new Runnable() {
public void run() {
textField.selectAll();
}
});
}
});
}
});
旁注:您是否考虑过用单个JSpinner替换三个JSpinner?
JSpinner spinner = new JSpinner(new SpinnerDateModel());
spinner.setEditor(new JSpinner.DateEditor(spinner, "MM/dd/yyyy"));
向上/向下箭头按钮(和箭头键)将更改包含文本光标的任何字段。
它不能解决您的重点问题,但您可以确定问题不大。