0

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

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

我认为问题出在 JComboBox 上,但每当我删除它时,我都会收到错误消息。

编辑

这是错误

at javax.swing.JComboBox.setSelectedIndex(Unknown Source)
at hello.initialize(hello.java:36)
at hello.main(hello.java:81)
4

5 回答 5

5
JComboBox optionlist = new JComboBox();
optionlist.setSelectedIndex(4);

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

实际上,您在哪里向 JComboBox添加任何项目?

请注意,将来如果您对代码生成的异常有疑问,您需要在此处发布实际的异常堆栈跟踪,并为我们指出哪一行引发了异常。

于 2013-02-28T04:27:40.860 回答
2

您正在设置只有 4 个元素的 ComboBox 模型,因此允许的最大索引为 3(作为其 0、1、2、3)。因此,如果您尝试将选定的索引设置为第 4 个元素,则必须将其设置为 3,如下所示:

optionlist .setModel(new DefaultComboBoxModel(new String[] {"Option", "High", "Medium",  "Low"}));
    optionlist.setSelectedIndex(3);
于 2013-02-28T05:32:20.550 回答
0

首先在 optionlist 中添加一些选项,然后执行此 optionlist.setSelectedIndex(4);

 JComboBox optionlist = new JComboBox();
 optionlist .setModel(new DefaultComboBoxModel(new String[] {"Option", "Baby Ride Frame   s/s", "Baby Ring",  "Baby Tri Cycle Frame", "Baby Tri Cycle Frame D/Seat"}));
 optionlist.setSelectedIndex(4);
于 2013-02-28T04:37:06.710 回答
0

我遇到了与eclipse完全相同的问题。错误是“setSelctedIndex(0) out of bounds。我通过确保所有服务器都在 Eclipse 上运行来解决它。这包括 mysql、apache 和用于测试网页的 tomcat 服务器。如果您使用的是 eclipse,请确保所有本地服务器在...上。

于 2013-10-04T15:57:09.067 回答
0

那是因为您正试图在数组列表中显示不可用的项目。因此,请确保您尝试显示的任何内容都可用于 Array 列表,请记住 Arraylist 开始于

JComboBox optionlist = new JComboBox();
optionlist.setSelectedIndex(4);

而且您没有第四个索引。即使你的组合框是空的,所以没有第 4 个。和或这样做。

JComboBox optionlist = new JComboBox();
optionlist.setSelectedIndex(-1);
于 2013-10-21T05:10:50.547 回答