没有太多要添加到标题问题。

这是跳到第一个框的样子,将光标放在该字段的第一个字符之前,以便用户如果希望输入自己的月,日或年,则必须删除该字符:



这是我想要的,当将该字段制表到(或以其他方式选中)时,这样,如果用户希望输入自己的年份,则不必删除显示的字符,等等:



我可以为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"));


向上/向下箭头按钮(和箭头键)将更改包含文本光标的任何字段。

它不能解决您的重点问题,但您可以确定问题不大。

10-04 11:44
查看更多