簡體   English   中英

當焦點轉移到不可編輯的JTextComponent時,如何消除播放的聲音

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM