Swing/ActionMap のバックアップの現在との差分(No.2)
JTextFieldでコピー、貼り付けなどを禁止
編集者:Terai Atsuhiro~
作成日:2005-07-18
更新日:2023-11-24 (金) 16:02:25
概要
JTextField
へのコピー、貼り付け、切り取りを禁止します。
Screenshot
Advertisement
概要
JTextFieldへのコピー、貼り付け、切り取りを禁止します。サンプルコード
#spanend
#spanadd
Action beep = new DefaultEditorKit.BeepAction();
#spanend
#spanadd
ActionMap am = field.getActionMap();
#spanend
#spanadd
am.put(DefaultEditorKit.cutAction, beep);
#spanend
#spanadd
am.put(DefaultEditorKit.copyAction, beep);
#spanend
#spanadd
am.put(DefaultEditorKit.pasteAction, beep);
#spanend
#spanadd
View in GitHub: Java, Kotlin解説
上記のサンプルでは、JTextField
のActionMap
からコピーなどのAction
を取得し、これらをビープ音を鳴らすDefaultEditorKit.BeepAction()
に置き換えています。
サンプルコード
ActionMap am = field.getActionMap(); Action beep = new DefaultEditorKit.BeepAction(); am.put(DefaultEditorKit.cutAction, beep); am.put(DefaultEditorKit.copyAction, beep); am.put(DefaultEditorKit.pasteAction, beep); field.setActionMap(am);
- 以下のように
copy
メソッドなどをオーバーライドする方法もある#spanend #spanadd JTextField field = new JTextField() { #spanend @Override public void copy() { UIManager.getLookAndFeel().provideErrorFeedback(this); // Toolkit.getDefaultToolkit().beep(); } #spanadd }; #spanend #spanadd
参考リンク
解説
上記のサンプルでは、JTextFieldのActionMapを、コピーなどの変わりにDefaultEditorKit.BeepAction()でビープ音をならすように変更しています。 以下のようにcopyメソッドなどをオーバーライドする方法もあります。JTextField field = new JTextField() { public void copy() { java.awt.Toolkit.getDefaultToolkit().beep(); } };