web-dev-qa-db-ja.com

JTextField setEnabled vs setEditable

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_で行われていることは、多くのクラスが関係しており、ここに投稿できないため、複雑すぎます。

このコンポーネントのメソッドをオーバーライドしていないので、なぜこの動作を示しているのでしょうか。

10
Tariq

私の場合、setEditable(false)はフィールドをグレー表示し、setEnabled(false)はフィールドをグレー表示しません。

TextFieldはデフォルトで編集可能です。コードsetEditable(false)は、TextFieldを編集不可にします。引き続き選択可能であり、ユーザーはそこからデータをコピーできますが、ユーザーはTextFieldのコンテンツを直接変更することはできません。


コードsetEnabled(false)は、このTextFieldを無効にします。それは選択可能ではなく、ユーザーはそこからデータをコピーできず、ユーザーはTextFieldの内容を直接変更できません。


有用なリンク

  1. テキストフィールドの使用方法
  2. Component#setEnabled()
25
ravibagul91

setEnabled(false)はフィールドを完全にグレーアウトしますが、setEditable(false)はフィールドが編集されないようにしますが、同じように見えます。

3
das_j