在主类上执行的操作

时间:2014-07-20 13:59:15

标签: java swing actionlistener

所以我正在创建一个执行加,子,乘和除的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
    }
}

1 个答案:

答案 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

查看有关事件处理/处理程序的更多信息