[英]How to remove the sound played when focus is transferred to an uneditable JTextComponent
當我將焦點放在不可編輯的JTextField或JTextPane上時,如何消除聲音?
每當我將焦點轉移到不可編輯的JTextPane並按Enter時,就會播放等於Toolkit類的“嗶嗶”聲:
Toolkit.getDefaultToolkit.beet();
如何使其不播放聲音?
您可能可以從以下問題中嘗試出這個主意:
想法是獲取文本字段的提示音操作並將其禁用。
JTextField field = new JTextField();
Action action;
action = field.getActionMap().get(DefaultEditorKit.beepAction);
action.setEnabled(false);
如果這不起作用,則可以嘗試添加KeyListener
,它將消耗導致發出嗶聲的KeyEvent
。
JTextField textField = new JTextField();
textField.addKeyListener(new KeyAdapter() {
@Override
public void keyTyped(KeyEvent e) {
if(e.getKeyCode() == KeyEvent.VK_ENTER){
// will consume the event and stop it from processing normally
e.consume();
}
}
});
您可以從Toolkit
類覆蓋beep
方法:
public class MuteToolkit extends Toolkit {
public void beep() {
//do nothing
}
// [...] other methods
}
然后,將此類設置為默認工具箱:
System.setProperty("awt.toolkit", "package.MuteToolkit");
但考慮到它會禁用所有蜂鳴聲,可能不是最佳選擇。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.