相关疑难解决方法(0)

如何在焦点上选择JFormattedTextField中的所有文本?

我有一个使用Swing的小型Java桌面应用程序.有一个数据输入对话框,其中包含一些不同类型的输入字段(JTextField,JComboBox,JSpinner,JFormattedTextField).当我通过在表单中​​进行选项卡或通过鼠标单击来激活JFormattedTextField时,我希望它选择它当前包含的所有文本.这样,用户就可以开始输入并覆盖默认值.

我怎样才能做到这一点?我确实使用了一个在JFormattedTextField上调用selectAll()的FocusListener/FocusAdapter,但它没有选择任何东西,尽管调用了FocusAdapter的focusGained()方法(参见下面的代码示例).

private javax.swing.JFormattedTextField pricePerLiter;
// ...
pricePerLiter.setFormatterFactory(
    new JFormattedTextField.AbstractFormatterFactory() {
    private NumberFormatter formatter = null;
    public JFormattedTextField.AbstractFormatter 
        getFormatter(JFormattedTextField jft) {
        if (formatter == null) {
            formatter = new NumberFormatter(new DecimalFormat("#0.000"));
            formatter.setValueClass(Double.class);
        }
        return formatter;
    }
});
// ...
pricePerLiter.addFocusListener(new java.awt.event.FocusAdapter() {
    public void focusGained(java.awt.event.FocusEvent evt) {
        pricePerLiter.selectAll();
    }
});
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?有趣的是,选择它的所有文本显然是JTextField和JSpinner的默认行为,至少在表格中选项时是这样.

java user-interface swing

33
推荐指数
4
解决办法
4万
查看次数

标签 统计

java ×1

swing ×1

user-interface ×1