Java JTextField setEnabled与setEditable

Java JTextField setEnabled与setEditable,java,swing,jtextfield,Java,Swing,Jtextfield,JTextField.setEnabled()和JTextField.setEditable()之间有什么区别? 在我的代码中,我有一个从JTextField继承的类的实例。但是当我设置它的属性setEnabled(false)时,我仍然可以在程序中编辑和处理它的内容。但是,当我设置其属性setEditable(false)时,我无法再编辑其文本。如果是这样的话。那么这里的setEnabled()属性的用途是什么 我的继承类代码是: private static class CCField e

JTextField.setEnabled()
JTextField.setEditable()
之间有什么区别? 在我的代码中,我有一个从
JTextField
继承的类的实例。但是当我设置它的属性
setEnabled(false)
时,我仍然可以在程序中编辑和处理它的内容。但是,当我设置其属性
setEditable(false)
时,我无法再编辑其文本。如果是这样的话。那么这里的
setEnabled()
属性的用途是什么

我的继承类代码是:

 private static class CCField extends JTextField{
      private static final long serialVersionUID = 1L;
      public CCField() {
        this( DEFAULT_COLUMN_COUNT );
      }

      public CCField(final int cols) {
        super( cols );
 }
添加信息 当我调用此类的
setEnabled()
属性时,它不会对文本字段显示任何效果,并且仍然保持启用状态。我的代码中有一个容器
Jcomponent
,它将此
CCField
作为子组件。因此,当我尝试使用
setEnabled(false)
禁用它时,它仍然是可编辑的。然而,当我尝试使用
setEditable(false)
禁用它时,它就被禁用了。 以下是我在容器中访问此文本字段的方式:

 JComponent jComp = DDEUtil.getComponent(icTableLayout,icDS);
 ((JTextField)jComp.getComponent(1)).setEditable(false);
而在
DDEUtil.getComponent
中发生的事情太复杂了,因为它涉及许多类,并且不可能在这里发布


我想知道我没有覆盖这个组件的任何方法,为什么它会显示这种行为。

设置启用(false)
将字段完全变灰时,
设置可编辑(false)
只是阻止它被编辑,但它看起来仍然一样。

在我的例子中
设置可编辑(false)
使字段变灰,而
设置启用(false)
不使字段变灰

默认情况下,文本字段是可编辑的。代码setEditable(false)使文本字段不可编辑。它仍然是可选择的,用户可以从中复制数据,但用户不能直接更改文本字段的内容。


代码setEnabled(false)将禁用此文本字段。它是不可选择的,用户不能从中复制数据,用户不能直接更改文本字段的内容。


有用的链接


  • 发布一个完整的程序来演示问题
    setEnabled(false)
    完全禁用文本字段
    setEditable(false)
    仍然允许选择和复制其内容,但不允许修改其值。@JBNizet我认为这符合答案的条件。@JimGarrison:我认为实际的问题是:为什么setEnabled(false)不禁用我的文本字段。但是OP需要发布更多的代码来回答这个问题。当我调用这个类的setEnabled()属性时,它不会对文本字段显示任何效果,并且仍然保持启用状态。您未显示的代码中有错误;-)因此,无论是发布一个SSCCE还是在没有帮助的情况下解决它,没有人能猜出哪条不可见的线是错的……我已经展示了所有东西,除了
    DDEUtil.getComponent
    ,它太大、太复杂和通用,因为它正在使用反射生成许多组件。我的情况不是这样。这里的
    setEditable(false)
    将字段变灰,而
    setEnabled(false)
    什么都不做……它工作得很好,
    CCField
    的代码肯定有问题,虽然没有解决问题,但我还是得到了我实际问题的答案,即不同的b/w
    setEnabled
    setEditable
    你能发布CCField的整个代码吗?这将有助于整个类的CCField已经张贴在原始问题中。非常奇怪的是,IMHO的“官方”是,残疾人是完全灰色的。“可编辑”只需锁定字段,但“仅”更改其背景灰显,同时文本保持可读性。你能确认并可能改进你的答案吗?使用Java1.8进行测试。