2016-06-01 2 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

이 더 좋은 방법이지만, 한 가지 방법은을하는 경우 나도 몰라 사용자 정의 룩앤필 (look and feel)은 경고음을 전혀 사용하지 못하게합니다. 이렇게하면 원하는 효과를 얻을 수 있지만 스피너뿐 아니라 전체 프로그램의 경고음이 비활성화됩니다.

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에 대한 답을 바탕으로합니다.

관련 문제