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 );
}
_
INFOを追加このクラスのsetEnabled()
プロパティを呼び出すと、テキストフィールドには何の効果も示されず、有効のままになります。私のコードには、このJcomponent
を子コンポーネントとして持つコンテナCCField
があります。したがって、setEnabled(false)
を使用して無効にしようとすると、まだ編集可能です。一方、setEditable(false)
を使用して無効にしようとすると、無効になります。これは私が私のコンテナでこのtextFieldにアクセスする方法です:
_ JComponent jComp = DDEUtil.getComponent(icTableLayout,icDS);
((JTextField)jComp.getComponent(1)).setEditable(false);
_
_DDEUtil.getComponent
_で行われていることは、多くのクラスが関係しており、ここに投稿できないため、複雑すぎます。
このコンポーネントのメソッドをオーバーライドしていないので、なぜこの動作を示しているのでしょうか。
私の場合、setEditable(false)
はフィールドをグレー表示し、setEnabled(false)
はフィールドをグレー表示しません。
TextFieldはデフォルトで編集可能です。コードsetEditable(false)は、TextFieldを編集不可にします。引き続き選択可能であり、ユーザーはそこからデータをコピーできますが、ユーザーはTextFieldのコンテンツを直接変更することはできません。
コードsetEnabled(false)は、このTextFieldを無効にします。それは選択可能ではなく、ユーザーはそこからデータをコピーできず、ユーザーはTextFieldの内容を直接変更できません。
有用なリンク
setEnabled(false)
はフィールドを完全にグレーアウトしますが、setEditable(false)
はフィールドが編集されないようにしますが、同じように見えます。