Java 使用ActionListener实现ItemListener接口

Java 使用ActionListener实现ItemListener接口,java,swing,user-interface,actionlistener,itemlistener,Java,Swing,User Interface,Actionlistener,Itemlistener,如果按下JButton,我想执行itemstener方法(如我的ActionListener方法中所述)。我觉得我遗漏了一些重要的东西,因为据我所知,在另一个方法中不能有方法 import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.ItemListener; import java.awt.event.Ite

如果按下
JButton
,我想执行
itemstener
方法(如我的
ActionListener
方法中所述)。我觉得我遗漏了一些重要的东西,因为据我所知,在另一个方法中不能有方法

import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemListener;
import java.awt.event.ItemEvent;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JButton;
import javax.swing.JOptionPane;

    public class spelling2 extends JFrame {

        private static final long serialVersionUID = 1L;
        JFrame frame = new JFrame();
        JButton question1;
        JButton question2;
        private JCheckBox q1a1;
        private JCheckBox q1a2;
        private JCheckBox q1a3;


        public spelling2() {
        super("Question 1");
        setLayout(new FlowLayout());

        q1a1 = new JCheckBox("recipracate");
        q1a2 = new JCheckBox("reciprocate");
        q1a3 = new JCheckBox("reciprokate");
        add(q1a1);
        add(q1a2);
        add(q1a3);


        question1 = new JButton("Question 1");
        add(question1);

        question2 = new JButton("Question 2");
        add(question2);


        HandlerClass handler = new HandlerClass();
        q1a1.addItemListener(handler);
        q1a2.addItemListener(handler);
        q1a3.addItemListener(handler);
        question1.addActionListener(handler);
        question2.addActionListener(handler);
        }


        private class HandlerClass implements ActionListener, ItemListener {

        public void actionPerformed (ActionEvent event) {
        if (question1.isSelected()) {
            d
        }
        public void itemStateChanged (ItemEvent event) {
        if (q1a2.isSelected())
            JOptionPane.showMessageDialog(frame, "quintessence is the correct answer");
        else if (q1a1.isSelected())
            JOptionPane.showMessageDialog(frame, "That is the wrong answer");
        else if (q1a3.isSelected())
            JOptionPane.showMessageDialog(frame, "That is the wrong answer");

        }
    }
}

我希望我对这个问题的解释是正确的,你正在试图找出哪个按钮被点击了。您可以使用
ActionEvent.getSource()
获取引发事件的对象。例如:

@Override
public void actionPerformed(ActionEvent event) {
    if (event.getSource() == question1) {
        JOptionPane.showMessageDialog(frame, "question1 is pressed");   
    } else if (event.getSource() == question2) {
        JOptionPane.showMessageDialog(frame, "question2 is pressed");
    }
}
请注意,您还可以使用匿名操作侦听器,例如:

question1.addActionListener(new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent e) {
        JOptionPane.showMessageDialog(frame, "question1 is pressed");               
    }
});

还请注意,除非您向其添加新功能,否则通常不需要扩展顶级窗口(如JFrame)

这是什么
if(question1.isSelected()){d}
正确关闭方法括号。完成。我希望在单击一个按钮时显示这3个复选框。1)请参见2)要更快获得更好的帮助,请发布一个(最小、完整、可验证的示例)。3) 使用逻辑一致的代码格式样式!代码缩进旨在帮助人们遵循程序流程。4) 一行空白就足够了。
{
之后或
}
之前的空行通常也是多余的。我希望一个新窗口显示一个问题(3个复选框),选择一个后,我希望一个新窗口显示一个新问题。@Joshua我不确定你的意思。你的问题中没有这方面的内容。是否要弹出一个窗口,其中包含一个问题字符串和三个复选框,每个复选框代表一个可能的答案?