Swing/DeleteKeyBeep のバックアップの現在との差分(No.12)
- category: swing folder: DeleteKeyBeep title: JTextFieldでのBeep音の設定を変更する tags: [JTextField, Beep, ActionMap, DocumentFilter] tags: [JTextField, Sound, 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
サンプルコード
#spandel
String key = DefaultEditorKit.deletePrevCharAction; //"delete-previous";
#spanend
#spandel
final Action deletePreviousAction = am.get(key);
#spanend
#spanadd
String key = DefaultEditorKit.deletePrevCharAction; // delete-previous
#spanend
#spanadd
Action deletePreviousAction = am.get(key);
#spanend
am.put(key, new TextAction(key) {
//@see javax/swing/text/DefaultEditorKit.java DeletePrevCharAction
// @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);
}
});
#spandel
key = DefaultEditorKit.deleteNextCharAction; //"delete-next";
#spanend
#spandel
final Action deleteNextAction = am.get(key);
#spanend
#spanadd
key = DefaultEditorKit.deleteNextCharAction; // delete-next
#spanend
#spanadd
Action deleteNextAction = am.get(key);
#spanend
am.put(key, new TextAction(key) {
//@see javax/swing/text/DefaultEditorKit.java DeleteNextCharAction
// @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解説
上記のサンプルでは、以下の2
点を変更して、Beep
音の設定を変更しています。
上記のサンプルでは、JTextField
のBeep
音の設定を以下2
点変更して動作テストを行っています。
-
TextAction(DefaultEditorKit.deleteNextCharAction)#actionPerformed(ActionEvent)
メソッドなどをオーバーライドして、DeleteキーやBack Spaceキーで文字の削除がなくても、Beep
音を鳴らさないように変更したアクションをActionMap
に設定 -
5
文字以上入力できないように制限し、超える場合はBeep
音を鳴らすDocumentFilter
を作成して、AbstractDocument#setDocumentFilter(DocumentFilter)
で設定 -
TextAction(DefaultEditorKit.deleteNextCharAction)#actionPerformed(ActionEvent)
メソッドなどをオーバーライドしてDeleteキーやBack Spaceキーで文字の削除がなくてもBeep
音を鳴らさないように変更したアクションをActionMap
に設定 -
5
文字以上入力できないように制限し、超える場合はBeep
音を鳴らすDocumentFilter
を作成してAbstractDocument#setDocumentFilter(DocumentFilter)
で設定