1

我正在寻找一些聪明的方法来解决我的问题。我在网上没有找到任何解决方案。其实我会问你任何提示,线索...

我有一个包含许多 JTextField 的对话框。它们代表某个对象的状态(我们称之为“模型”)。在某些情况下,其中一些字段应该被禁用。尽管事实上,“模型”包含这些字段的值,但我不想显示它们(它们无关紧要)。所以,我想在每个禁用字段中设置“n/A”值(总是在禁用时)。

我唯一的想法是创建CustomJTextBox extends JTextBox和覆盖该setText()方法:

class CustomTextField extends JTextField {
    //... constructors
    @Override
    public void setText(String s){
        if(!this.isEnabled()){
            super.setText("n/A");
        } else {
            super.setText(s);
        }
    }
}

但它有很多弱点:D

  • 它仅在使用 setText() 时有效
  • 如果我使用 CustomTextFIeld(String s) 构造函数,它将不起作用 - 此构造函数不应该可用,这不直观
  • 可能还有更多...

我想它应该存在其他一些方法......你能提供任何提示吗?

4

1 回答 1

2

不要扩展 a JTextComponent,而是使用静态工厂方法这里讨论。在工厂中,添加一个DocumentListener强制执行您的要求的选项。

于 2013-08-21T10:51:52.600 回答