簡體   English   中英

線程“主”中的異常java.lang.IllegalArgumentException:setSelectedIndex:4超出范圍

[英]Exception in thread “main” java.lang.IllegalArgumentException: setSelectedIndex: 4 out of bounds

我正在嘗試制作游戲,但是我的代碼根本無法正常工作,我也不知道為什么。 我是一個新手程序員,經驗不足,對我的代碼感到非常沮喪。 我一直在嘗試解決此問題,但無濟於事。 請幫我。

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)
JComboBox optionlist = new JComboBox();
optionlist.setSelectedIndex(4);

這將導致異常,因為您正在設置 JComboBox的索引。 根本不要這樣做。 選擇索引之前,請在組合框中填充項目。

實際上,您在哪里向JComboBox添加任何項目?

請注意,將來如果您對代碼所生成的異常有疑問,則需要在此處發布實際的異常堆棧跟蹤,並為我們指出哪一行引發了異常。

您正在設置僅包含4個元素的ComboBox模型,因此允許的最大索引為3(因為其0、1、2、3)。 因此,如果嘗試將所選索引設置為第4個元素,則必須將其設置為3,如下所示:

optionlist .setModel(new DefaultComboBoxModel(new String[] {"Option", "High", "Medium",  "Low"}));
    optionlist.setSelectedIndex(3);

首先在選項列表中添加一些選項,然后執行此選項列表。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);

我在日食方面遇到了完全相同的問題。 錯誤是“ setSelctedIndex(0)超出范圍。我通過確保所有服務器都在eclipse上運行來解決它。這包括mysql,apache和tomcat服務器來測試網頁。如果使用eclipse,請確保所有本地服務器在...上。

那是因為您正試圖在數組列表中顯示不可用的項目。 因此,請確保您要嘗試顯示的所有內容都可以在Array列表中使用,請記住Arraylist是從

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

而且您沒有第4個索引。 即使您的組合框是空的,所以沒有可用的第四組合框。 和或這樣做。

JComboBox optionlist = new JComboBox();
optionlist.setSelectedIndex(-1);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM