0

私は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);
        }
    }
}
4

2 に答える 2

4

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);
            }
        });
    }
}

適切な値を返します。ネガティブではありません。幸運を!

于 2012-12-18T22:05:44.173 に答える
4

少し遅れていますが、自動生成されたコードを使用したNetbeansのソリューションは次のとおりです。jSpinner->プロパティ->2行目の「モデル」クリック[..]とuには異なるオプションがあります:)

于 2014-04-20T12:13:42.477 に答える