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

私は日食でまったく同じ問題を抱えていました。エラーは「setSelectedIndex(0) が範囲外でした。すべてのサーバーが Eclipse で実行されていることを確認して解決しました。これには、Web ページをテストするための mysql、apache、および tomcat サーバーが含まれます。Eclipse を使用している場合は、すべてのローカル サーバーを確認してください。オンになっています。

于 2013-10-04T15:57:09.067 に答える
0

これは、配列リストに使用できないアイテムを表示しようとしているためです。したがって、表示しようとしているものはすべて、配列リストで利用可能であることを確認してください

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

そして、あなたは4番目のインデックスを持っていません。コンボボックスも空なので、4番目のコンボボックスは利用できません。およびまたはこれを行います。

JComboBox optionlist = new JComboBox();
optionlist.setSelectedIndex(-1);
于 2013-10-21T05:10:50.547 に答える
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 に答える