-3

プログラムの一部を取り出して、ここにコードを置きます。基本的に問題は、アイテム リスナー メソッドが呼び出されていないことです。ここで、ユーザーが正しい答えを選択して「送信」を押すと、actionlistener メソッドが答えが正しいかどうかを知らせます。

static boolean answer = false; // returns this as true if user got question right

public void QuizPanel() {
    QuizPanel = new JPanel();
    QuizPanel.setLayout(null); // default layout

    JLabel label = new JLabel( "True/False- Java is Object Orientated?");
    label.setBounds(10, 50, 400, 20);
    QuizPanel.add(label);

    option1 = new JCheckBox("True"); 
    option1.setSelected(false);
    option1.setBounds(10, 70, 120, 40);                         
    QuizPanel.add(option1);
    option1.addItemListener(this); // Adds a item listener

    option2 = new JCheckBox("False");
    option2.setSelected(false);
    option2.setBounds(40, 70, 120, 40);
    QuizPanel.add(option2);
    option2.addItemListener(this);

    ///////////////////////////////////////

    JButton submit = new JButton("SUBMIT ANSWER:");
    submit.setBounds(10, 100, 150, 20);
    QuizPanel.add(submit);

    submit.addActionListener(new ActionListener() { // Action Listener      
        public void actionPerformed(ActionEvent evt2) {
            System.out.println ("Your answer is " + answer); // Got it right?
        }
    });
}

public void itemStateChanged1(ItemEvent e1) { 
    Object source = e.getItemSelectable();          
    if (source == option1) { 
        answer = true;
    } else {
        //nothing- stays false
    }       
}

何も起こらず、ユーザーが正しいか間違っているかをユーザーに伝えません。

4

2 に答える 2

3
QuizPanel = new JPanel();

標準の Java 命名規則を使用します。変数名は大文字で始めるべきではありません:

QuizPanel.setLayout(null);
...
label.setBounds(10, 50, 400, 20);

null レイアウトと setBounds() を使用しないでください。Swing は、Layout Manager で使用するように設計されています。

public void itemStateChanged1(ItemEvent e1) throws IOException

あなたのコードがどのようにコンパイルされるかわかりません。間違った方法を実装しています。また、ItemListener が IOException をスローするのはなぜですか?

あなたが間違っていることを推測するには、小さな間違いが多すぎます。適切な SSCCE を投稿します。

于 2013-05-14T19:32:25.193 に答える
0

あなたは言うObject source = e.getItemSelectable();

が、あなたe1はあなたのItemEvent.

に変更Object source = e.getItemSelectable();してみてくださいObject source = e1.getItemSelectable();

于 2013-05-14T19:29:19.333 に答える