• ベストアンサー

JTextFieldでのダブルクリック

JTextField入力・編集中に、マウスをダブルクリックすると、 デフォルトで単語の選択状態になりますが、これを無効にする 方法を教えてください。 以上、よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • nknk80
  • ベストアンサー率65% (17/26)
回答No.2

No.1です。 swingのソースを読むと、単語選択のイベント処理をするときに、 DefaultEditorKit.selectWordActionをActionMapから 取得して実行しています。 ところが、取得したアクションがnullの場合 何もしないのではなく、内部的に DefaultEditorKit.SelectWordActionインスタンスを 作成して実行しています。 そのため、ActionMapから削除しただけでは駄目です。 何もしないのであれば、次のような何もしないアクションを 作成して渡せばよいと思います。 static final Action NOOP=new AbstractAction(){ @Override public void actionPerformed(ActionEvent e){} }; am.put(DefaultEditorKit.selectWordAction,NOOP);

ggable
質問者

お礼

ありがとうございました。

その他の回答 (1)

  • nknk80
  • ベストアンサー率65% (17/26)
回答No.1

ActionMapで単語選択アクションを禁止すれば無効になると思います。 JTextField field=new JTextField(); Action beep=new DefaultEditorKit.BeepAction(); ActionMap am=field.getActionMap(); am.put(DefaultEditorKit.selectWordAction,beep);

ggable
質問者

補足

ご回答ありがとうございました。 単純にアクションを削除することはできないのでしょうか? field.getActionMap().delete(DefaultEditorKit.selectWordAction); で、デリートできないのはなぜでしょうか?