2014-10-06 4 views
2

Как я могу избавиться от звука, когда я фокусирую внимание на неотредактированном JTextField или JTextPane?Как удалить звук, воспроизводимый при передаче фокуса в неотредактированный JTextComponent

Всякий раз, когда я передать фокус на JTextPane, который нередактируем и нажмите Enter, звук играет, которая является равен «бип» класса Toolkit:

Toolkit.getDefaultToolkit.beet(); 

Как я могу сделать это не играет никакого звука?

+0

Пожалуйста, добавьте пример короткого кода, который демонстрирует проблему. – user1803551

ответ

2

Вы могли бы попробовать эту идею из этого question, цитируемый:

Идея заключается в том, чтобы получить действие звукового сигнала для текстового поля и отключить его.

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(); 
    }   
    } 
}); 
+0

, он не работает, это то, что я вложил в свой код: Действие; action = getActionMap(). Get (DefaultEditorKit.beepAction); action.setEnabled (false); – WearFox

+0

спасибо за обновление, я добавил еще одно предложение, которое вы могли бы попытаться остановить звуковой сигнал. – PeterK

+0

Perfect !!!! : D спасибо !!!! после 22 часов я могу присудить награду – WearFox

1

Вы можете переопределить beep метод из Toolkit класса:

public class MuteToolkit extends Toolkit { 
    public void beep() { 
     //do nothing 
    } 
    // [...] other methods 
} 

Затем установите этот класс в качестве инструментария по умолчанию:

System.setProperty("awt.toolkit", "package.MuteToolkit"); 

Но может быть не самым лучшим вариантом, учитывая, что отключает все звуковые сигналы.

+0

, если я это сделаю ... Я должен выполнить реализацию всех методов, и каждый из них выкинет новое UnsupportedOperationException, поэтому в этом методе «public Image createImage (производитель ImageProducer)» я не могу оставить в пробеле – WearFox

+0

Вы также можете расширить базовая реализация Toolkit, такая же, как и метод getDefaultToolkit. – elias

+0

Я не могу, потому что эти методы защищены ... защищенный абстрактный DesktopPeer createDesktopPeer (рабочий стол) throws HeadlessException; поэтому DefaultToolkit не имеет ни одного из этих – WearFox

Смежные вопросы