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我不确定你的意思。你的问题中没有这方面的内容。是否要弹出一个窗口,其中包含一个问题字符串和三个复选框,每个复选框代表一个可能的答案?