gpt4 book ai didi

java - 如何使 JSpinner 对象的全部内容突出显示,以便在获得焦点时用户输入不需要删除?

转载 作者:行者123 更新时间:2023-12-01 13:36:36 25 4
gpt4 key购买 nike

对于标题问题没有太多可补充的。

以下是按 Tab 键切换到第一个框的样子,将光标放在字段中的第一个字符之前,这样如果用户希望输入自己的月、日或年数字,则必须删除该字符:

enter image description here

这就是我想要的,当字段被选项卡切换到(或以其他方式选择)时,这样用户如果希望输入自己的年份等,则不必删除显示的字符:

enter image description here

我可以为 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com