所以我正在创建一个执行加,子,乘和除的GUI,但我需要有组件,构造函数,进程和放大器。显示应该在子类中我的问题是我无法让我的答案按钮工作。
子类:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class basic_arithmetic extends JFrame{
public JPanel panel1, panel2;
public JRadioButton sum, dif, pro, quo;
public JTextField n1, n2;
public JButton answer, clear;
public ButtonGroup button;
public comBHandler cbHandler;
public exBHandler ebHandler;
public static final int WID=400;
public static final int HGT=125;
public basic_arithmetic(){
answer = new JButton("Answer");
cbHandler = new comBHandler();
answer.addActionListener(cbHandler);
clear = new JButton("Clear");
ebHandler = new exBHandler();
clear.addActionListener(ebHandler);
public class comBHandler implements ActionListener{
public void actionPerformed(ActionEvent event){
}
}
public class exBHandler implements ActionListener{
public exBHandler() {
}
public void actionPerformed(ActionEvent event){
n1.setText(null);
n2.setText(null);
}
public void setButtonActionListener(ActionListener al) {
answer.addActionListener(al);
}
}
}
主要课程:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class basic_arithmetic_caller{
public static void main(String[] args){
basic_arithmetic new = new basic_arithmetic();
//if statement for answer button here
}
}
答案 0 :(得分:1)
你完全错过了事件处理的想法。您在main方法中拥有的所有代码在运行程序时都是正确的。所以你的isSelected()
都不会等同于真,因为还没有选择任何东西。
在事件处理的上下文中,当用户/或组件执行某些操作时,触发事件/例如,如果按下按钮,则会触发ActionEvent。组件需要注册的侦听器来侦听这些事件。当触发偶数时,感兴趣的侦听器捕获事件并处理回调。
例如,您有一个按钮
JButton button = new JButton("Button");
每次按下putton,它都会发出ActionEvent
。为了能够“捕获”该事件,您需要一个具有actionPeformed
的侦听器,该事件在事件被触发时被调用。
public MyListener extends ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("Button pressed");
}
}
现在您只需要将监听器注册到按钮即可。按下按钮后,一系列调用将导致actionPerformed
被调用。
button.addActionListener(new MyListener());
现在说完了,你需要用你的单选按钮做同样的事情。你需要为它添加一个监听器,所以它会在你的main方法中执行你所拥有的代码,而不管它是什么。
请参阅How to Use Buttons, Check Boxes, and Radio Buttons了解详情。这三个属于AbstractButton
系列,因此它们具有相似的功能。
您还会注意到,不同的组件可以添加不同的侦听器,因为它们会触发不同的事件。您可以在Writing Event Listeners
查看有关事件处理/处理程序的更多信息