【问题标题】:Preventing negative values in jSpinner防止 jSpinner 中的负值
【发布时间】:2012-12-18 21:46:46
【问题描述】:

我正在使用 netbeans 在 java 中构建 gui 应用程序。它有一个 jSpinner。我将它的最小值设置为 0。当我运行并单击向下箭头按钮时,我得到了negativearraysizeexception。有什么解决办法吗?

//此代码在netbeans中自动生成

protected void fireStateChanged() {
    Object[] listeners = listenerList.getListenerList();
    for (int i = listeners.length - 2; i >= 0; i -= 2) {
        if (listeners[i] == ChangeListener.class) {
            if (changeEvent == null) {
                changeEvent = new ChangeEvent(this);
            }
            ((ChangeListener)listeners[i+1]).stateChanged(changeEvent);
        }
    }
}

【问题讨论】:

  • 向我们展示您的代码。准确地说...在侦听器中编写代码。
  • 以及异常的完整堆栈跟踪。

标签: java swing netbeans jspinner changelistener


【解决方案1】:

试试这种方式,而不是 NetBeans 自动生成的代码:

import javax.swing.JFrame;
import javax.swing.JSpinner;
import javax.swing.SpinnerModel;
import javax.swing.SpinnerNumberModel;
import javax.swing.SwingUtilities;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;

public class Spinner {

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                JFrame frame = new JFrame("Spinner demo");
               //10 is init value, 0 is minimum, 20 maximum and 1 is step
                SpinnerModel model = new SpinnerNumberModel(10, 0, 20, 1);
                JSpinner spinner = new JSpinner(model);
                spinner.addChangeListener(new ChangeListener() {
                    public void stateChanged(ChangeEvent e) {
                        JSpinner s = (JSpinner)e.getSource();
                        int val = (int)s.getValue();
                        System.out.println(val);
                    }
                });

                frame.add(spinner);
                frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
                frame.pack();
                frame.setVisible(true);
            }
        });
    }
}

它返回正确的值。没有负面的。祝你好运!

【讨论】:

  • 第一次尝试,然后接受答案...不用着急!顺便说一句,欢迎你。
【解决方案2】:

有点晚了,但这是 Netbeans 中的一个自动生成代码的解决方案: jSpinner -> 属性 -> 第二行“模型”点击 [..] 你有不同的选择:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多