【问题标题】:Java: How to disable JSpinner beepingJava:如何禁用 JSpinner 哔声
【发布时间】:2016-06-01 23:20:25
【问题描述】:

当在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();
    }

}

【问题讨论】:

  • 所以我想出了如何做到这一点。老实说,这是一个完整的黑客工作,不应该这样做。更好的是,你为什么要禁用它?看来您确实需要一个更好的系统。
  • @Obicere 出于好奇,你是怎么做到的?我尝试了几种方法,但唯一对我有用的是下面发布的一种,这并不理想。

标签: java input jspinner beep


【解决方案1】:

我不知道是否有更好的方法,但一种方法是制作完全禁用哔哔声的自定义外观。这可以达到预期的效果,但也会禁用整个程序的蜂鸣声,而不仅仅是微调器。

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 的回答。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-04-26
    • 1970-01-01
    • 2012-05-19
    • 1970-01-01
    • 1970-01-01
    • 2010-10-16
    • 2013-12-12
    相关资源
    最近更新 更多