对于标题问题没有太多可补充的。
以下是按 Tab 键切换到第一个框的样子,将光标放在字段中的第一个字符之前,这样如果用户希望输入自己的月、日或年数字,则必须删除该字符:
这就是我想要的,当字段被选项卡切换到(或以其他方式选择)时,这样用户如果希望输入自己的年份等,则不必删除显示的字符:
我可以为 JTextField
完成此操作,如下所示:
txtDateFrom.select(0,99);
但是 .select()
不是 JSpinner
的方法。
(我意识到这提出了一个问题,“为什么使用旋转器?”但明显的答案是我希望两种选择方法都可用,就像设计中常见的那样。 )
(一个不那么紧迫但相关的问题...我创建了一个包含 100 年日期的整数数组 [例如 2014],名为 years
并使用 SpinnerListModel(years)
因为当使用 SpinnerNumberModel
时,一年将显示为 2,014。我可以接受我所做的,但是有没有更简单的方法?没有包含“format”的方法我可以找到这个方法。)
最佳答案
这适用于 Java 1.7.0_51、Windows 和 Linux。我没有能力在 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"));
向上/向下箭头按钮(和箭头键)将更改包含文本光标的字段。
它不会解决您的注意力问题,但您可能会认为这个问题不是什么问题。
关于java - 如何使 JSpinner 对象的全部内容突出显示,以便在获得焦点时用户输入不需要删除?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21225401/