如何在main方法期间添加ActionListener

时间:2018-06-20 15:10:52

标签: java swing actionlistener actionevent

我试图制作一个程序来计算TextField的数字。为了让它开始计算,您必须按下一个按钮,然后必须向该按钮添加一个ActionListener,但据我所知,这是不可能的,因为您不能使用 this 在静态上下文中。

import javax.swing.*;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public abstract class math extends JFrame implements ActionListener { 

 public static void main(String[] args) {   

    JFrame frame = new JFrame();

    JButton button = new JButton("text");

    JPanel mainPanel =new JPanel();

    JLabel mainLabel = new JLabel("text");

    JTextField mainField = new JTextField(5);

    button.addActionListener(this);

    mainPanel.add(mainLabel);
    mainPanel.add(mainField);

    mainPanel.add(button);

    frame.setTitle("text");
    frame.setSize(1000, 700);
    frame.setVisible(true);

    frame.add(mainPanel);

    //when the button something gets done here

    double num = Double.valueOf(mainField.getText());
    num * 4;
}
}

我知道如何编写不在主方法中的ActionListener,但在这里必须如此,至少我认为是这样。我希望在缩短代码的同时,不要删掉其中的一些重要部分。

1 个答案:

答案 0 :(得分:2)

选项1:实例化一个实现some的对象

ActionListener

选项2:使用lambda函数(Java 8或更高版本)

button.addActionListener(new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent e) {
        // whatever you need to do
        System.out.println("The button was pressed!");
    }
});