JTextField setEnabled vs setEditable

Tar*_*riq 10 java swing jtextfield

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 );
 }
Run Code Online (Sandbox Code Playgroud)

添加INFO 当我调用setEnabled()此类的属性时,它不会对文本字段显示任何影响,它仍然保持启用状态.Jcomponent我的代码中有一个容器,它将此CCField作为子组件.因此,当我尝试使用setEnabled(false)它仍然可以编辑时禁用它.而当我尝试使用setEditable(false)它时禁用它然后它被禁用.这是我在容器中访问此textField的方式:

 JComponent jComp = DDEUtil.getComponent(icTableLayout,icDS);
 ((JTextField)jComp.getComponent(1)).setEditable(false);
Run Code Online (Sandbox Code Playgroud)

正在发生的事情DDEUtil.getComponent太复杂了,因为它涉及许多课程而且不可能在这里发布.

我想我没有覆盖这个组件的任何方法,所以为什么它显示这种行为.

rav*_*l91 25

在我的情况下setEditable(false)是灰场,而setEnabled(false)不是灰场.

默认情况下,TextField是可编辑的.代码setEditable(false)使TextField不可编辑.它仍然是可选的,用户可以从中复制数据,但用户无法直接更改TextField的内容.


代码setEnabled(false)禁用此TextField.它不可选,用户无法从中复制数据,用户无法直接更改TextField的内容.


有用的链接

  1. 如何使用文本字段
  2. 的setEnabled部分#()