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)
禁用它时,它被禁用。
这就是我在容器中访问此textField的方式:
JComponent jComp = DDEUtil.getComponent(icTableLayout,icDS);
((JTextField)jComp.getComponent(1)).setEditable(false);
DDEUtil.getComponent
中发生的事情过于复杂,因为涉及多个课程而且无法在此发布。
我想我没有覆盖此组件的任何方法,所以为什么它会显示这种行为。
答案 0 :(得分:25)
在我的情况下,setEditable(false)
使字段变灰,而setEnabled(false)
不会使字段变灰。
默认情况下,TextField可编辑。代码setEditable(false)使TextField不可编辑。它仍然是可选的,用户可以从中复制数据,但用户无法直接更改TextField的内容。
代码setEnabled(false),禁用此TextField。它不可选,用户无法从中复制数据,用户无法直接更改TextField的内容。
有用的链接
答案 1 :(得分:3)
虽然setEnabled(false)
完全灰显了该字段,setEditable(false)
只是阻止它被编辑,但它仍然看起来一样。