Java:如何禁用 JSpinner 哔声
Posted
技术标签:
【中文标题】Java:如何禁用 JSpinner 哔声【英文标题】:Java: How to disable JSpinner beeping 【发布时间】: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 出于好奇,你是怎么做到的?我尝试了几种方法,但唯一对我有用的是下面发布的一种,这并不理想。 【参考方案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 的回答。
【讨论】:
以上是关于Java:如何禁用 JSpinner 哔声的主要内容,如果未能解决你的问题,请参考以下文章