Swing/DeleteKeyBeep のバックアップ(No.13)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- Swing/DeleteKeyBeep へ行く。
- 1 (2012-10-01 (月) 14:42:41)
- 2 (2012-10-02 (火) 14:48:03)
- 3 (2012-12-06 (木) 12:18:43)
- 4 (2012-12-07 (金) 16:43:35)
- 5 (2013-07-26 (金) 01:42:46)
- 6 (2014-02-06 (木) 20:31:52)
- 7 (2014-09-17 (水) 13:12:31)
- 8 (2014-10-22 (水) 00:56:08)
- 9 (2015-11-15 (日) 02:59:32)
- 10 (2017-04-04 (火) 14:17:08)
- 11 (2017-04-28 (金) 16:49:39)
- 12 (2018-04-18 (水) 16:23:40)
- 13 (2020-04-10 (金) 21:01:42)
- 14 (2021-05-12 (水) 07:33:45)
- category: swing folder: DeleteKeyBeep title: JTextFieldでのBeep音の設定を変更する tags: [JTextField, Beep, ActionMap, DocumentFilter] author: aterai pubdate: 2012-10-01T14:42:41+09:00 description: JTextFieldなどで、Delete、Back Spaceキーを押した時に鳴らすBeep音の設定を変更します。 image:
概要
JTextField
などで、Delete、Back Spaceキーを押した時に鳴らすBeep
音の設定を変更します。
Screenshot
Advertisement
サンプルコード
String key = DefaultEditorKit.deletePrevCharAction; //"delete-previous";
final Action deletePreviousAction = am.get(key);
am.put(key, new TextAction(key) {
//@see javax/swing/text/DefaultEditorKit.java DeletePrevCharAction
@Override public void actionPerformed(ActionEvent e) {
JTextComponent target = getTextComponent(e);
if (target != null && target.isEditable()) {
Caret caret = target.getCaret();
int dot = caret.getDot();
int mark = caret.getMark();
if (dot == 0 && mark == 0) {
return;
}
}
deletePreviousAction.actionPerformed(e);
}
});
key = DefaultEditorKit.deleteNextCharAction; //"delete-next";
final Action deleteNextAction = am.get(key);
am.put(key, new TextAction(key) {
//@see javax/swing/text/DefaultEditorKit.java DeleteNextCharAction
@Override public void actionPerformed(ActionEvent e) {
JTextComponent target = getTextComponent(e);
if (target != null && target.isEditable()) {
Document doc = target.getDocument();
Caret caret = target.getCaret();
int dot = caret.getDot();
int mark = caret.getMark();
if (dot == mark && doc.getLength() == dot) {
return;
}
}
deleteNextAction.actionPerformed(e);
}
});
View in GitHub: Java, Kotlin解説
上記のサンプルでは、JTextField
のBeep
音の設定を、以下2
点変更して動作テストを行っています。
TextAction(DefaultEditorKit.deleteNextCharAction)#actionPerformed(ActionEvent)
メソッドなどをオーバーライドして、DeleteキーやBack Spaceキーで文字の削除がなくても、Beep
音を鳴らさないように変更したアクションをActionMap
に設定5
文字以上入力できないように制限し、超える場合はBeep
音を鳴らすDocumentFilter
を作成して、AbstractDocument#setDocumentFilter(DocumentFilter)
で設定