2016-06-01 9 views
1

Когда в JSpinner введен неверный ввод, раздаётся звуковой сигнал, и я не могу понять, как его отключить.Java: как отключить звуковой сигнал JSpinner

Я использую номер блесну с недопустимым вводом не разрешено быть набрано, например, так:

public class SpinnerTester { 

    public static void main(String[] args) { 

     JSpinner spinner = new JSpinner(new SpinnerNumberModel(1, 0, 100, 1)); 


     //disable invalid input from being typed into spinner 
     JFormattedTextField textField = ((JSpinner.NumberEditor) spinner.getEditor()).getTextField(); 
     ((NumberFormatter) textField.getFormatter()).setAllowsInvalid(false); 

     JFrame frame = new JFrame(); 
     frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); 
     frame.add(spinner); 
     frame.setVisible(true); 
     frame.pack(); 
    } 

} 
+0

Итак, я понял, как это сделать. Честно говоря, его полная хакерская работа и не должна быть сделана. Еще лучше, почему вы хотите отключить это? Кажется, вам нужна более совершенная система. – Obicere

+0

@ Obicere Из любопытства, как вы это сделали? Я пробовал несколько методов, но единственным, который работал для меня, был тот, который был представлен ниже, что не идеально. – Kosaro

ответ

0

Я не знаю, если есть лучший способ, но один способ сделать пользовательский внешний вид, который отключает звуковой сигнал в целом. Это обеспечивает желаемый эффект, но также отключает звуковой сигнал для всей программы, а не только счетчика.

public class SpinnerTester { 

    public static void main(String[] args) { 

     JSpinner spinner = new JSpinner(new SpinnerNumberModel(1, 0, 100, 1)); 


     //disable invalid input from being typed into spinner 
     JFormattedTextField textField = ((JSpinner.NumberEditor) spinner.getEditor()).getTextField(); 
     ((NumberFormatter) textField.getFormatter()).setAllowsInvalid(false); 

     /** 
     * Change look and field 
     */ 
     try { 
      UIManager.setLookAndFeel(new MyLookAndFeel()); 
     } catch (UnsupportedLookAndFeelException e) { 
      e.printStackTrace(); 
     } 

     JFrame frame = new JFrame(); 
     frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); 
     frame.add(spinner); 
     frame.setVisible(true); 
     frame.pack(); 

    } 

    /** 
    * Create Look and Feel without beeps 
    */ 
    public static class MyLookAndFeel extends NimbusLookAndFeel { 
     @Override 
     public void provideErrorFeedback(Component component) { 
      //super.provideErrorFeedback(component); 
     } 
    } 
} 

Основано на ответе this question.

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

  • Нет связанных вопросов^_^