线程"main"中的异常java.lang.IllegalArgumentException:setSelectedIndex:4 out of bounds

0 java eclipse user-interface swing jframe

我正在尝试制作游戏,但我的代码根本不起作用,我不知道为什么.我是一名经验不足的新手程序员,对我的代码感到非常沮丧.我一直试图解决这个问题,但无济于事.请帮助我

public class hello {
    //Int's and things
    static JButton Play = new JButton("<PLAY>");
    static JFrame pane = new JFrame("CIrCUT 0.0.2");
    static JLabel Title = new JLabel("CIrCUT");
    static JLabel none = new JLabel(" ");
    static JPanel panel = new JPanel(new GridLayout(10, 10, 10, 10));
    static JButton Options = new JButton("<OPTIONS>");
    static JPanel panel2 = new JPanel(new GridLayout(10, 10, 10, 10));
    static String b[] = new String[3];
    static int panelLoct = 1;
    JComboBox optionlist = new JComboBox();

    void initialize() {
        b[0] = "High";
        b[1] = "Medium";
        b[2] = "Low";

        //title
        pane.setTitle("CIrCUT 0.0.2");
        //drop down
        optionlist .setModel(new DefaultComboBoxModel(new String[] {"Option", "High", "Medium",  "Low"}));
        optionlist.setSelectedIndex(4);
        optionlist.addActionListener((ActionListener) this);
        //other pane-related things
        if (panelLoct == 1) {
            pane.setLayout(new GridLayout(10, 10));
            panel.setMaximumSize(new Dimension(500, 500));
            pane.setSize(500, 500);
            pane.setMaximumSize(new Dimension(500, 500));
            panel.add(Title);
            panel.add(none);
            panel.add(Play);
            panel.add(Options);
            panel2.add(optionlist);
            Play.setSize(new Dimension(500, 450));
            pane.setLocation(500, 50);
            pane.setBackground(Color.lightGray);
            pane.setContentPane(panel);
            pane.pack();
            pane.setMinimumSize(new Dimension(500, 500));
            pane.setContentPane(panel);
            OptionButtonHandler cbHandler = new OptionButtonHandler();
            Options.addActionListener(cbHandler);
            pane.setVisible(true);
        }
    }

    public void windowClosing(WindowEvent e) {
        System.exit(0);
    }

    private static class OptionButtonHandler implements ActionListener {
        public void actionPerformed(ActionEvent e) {
            pane.remove(panel);
            pane.add(panel2);
        }
    }

    public void actionPerformed(ActionEvent e) {
        JComboBox cb = (JComboBox) e.getSource();
        cb.getSelectedItem();
    }

    public static void main(String args[]) {
        hello a = new hello();
        a.initialize();
    }
}
Run Code Online (Sandbox Code Playgroud)

我认为问题是JComboBox,但每当我删除它,我只是得到一个错误.

编辑

这是错误

at javax.swing.JComboBox.setSelectedIndex(Unknown Source)
at hello.initialize(hello.java:36)
at hello.main(hello.java:81)
Run Code Online (Sandbox Code Playgroud)

Hov*_*els 5

JComboBox optionlist = new JComboBox();
optionlist.setSelectedIndex(4);
Run Code Online (Sandbox Code Playgroud)

这将导致异常,因为您正在设置空 JComboBox 的索引.根本不要这样做.在选择索引之前,使用项目填充组合框.

实际上,你在哪里添加任何项目到JComboBox?

需要注意的是在未来,如果你有一个关于你的代码生成异常的问题,你要在这里发布实际的异常堆栈跟踪以及指示我们这行抛出异常.