[英]Non-static variable this cannot be referenced from a static context JFrame
我有以下代码:
private static void inputGUI() {
inputFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
inputFrame.setTitle("The INPUT");
panel.add(printButton);
printButton.setBounds(135,560,120,30);
inputFrame.setLayout(null);
inputFrame.add(panel);
panel.setBounds(1000,100,366,768-100);
//ActionListeners!!!
printButton.addActionListener(this);
inputFrame.setSize(1366,768);
inputFrame.setVisible(true);
}
我想将动作监听器添加到名为
printButton
我也有一个JFrame
inputFrame
这在我的主
public static void main (String[] args) {
inputGUI();
}
但我不断收到此错误:
error: non-static variable this cannot be referenced from a static context
我怎样才能做到这一点? 如果你们能在不使用匿名内部课程的情况下帮助我,那将是很棒的。(我的老师还没有教我们这一课)。 谢谢!
以下代码导致了问题。
printButton.addActionListener(this);
原因:
inputGUI()
是静态的,因此使用this
关键字引用当前对象被拒绝。
解:
只需创建该类的新对象即可处理printButton
的click事件。 说MainClass对此负责。 更改您的代码,如下所示:
printButton.addActionListener(new MainClass());
替代解决方案:
使inputGUI()
为非静态。 并从main方法中调用它作为new MainClass().inputGUI()
。 休息保持不变。
import java.awt.event.ActionEvent;
import javax.swing.*;
public class NewClass {
public NewClass(){
//inputGUI();
}
public static void method(){
JOptionPane.showMessageDialog(null, "");
}
private static void inputGUI() {
JFrame inputFrame = new JFrame();
JPanel panel = new JPanel();
JButton printButton = new JButton();
inputFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
inputFrame.setTitle("The INPUT");
panel.add(printButton);
printButton.setBounds(135,560,120,30);
inputFrame.setLayout(null);
inputFrame.add(panel);
panel.setBounds(1000,100,366,768-100);
//ActionListeners!!!
printButton.addActionListener(new java.awt.event.ActionListener() {
@Override
public void actionPerformed(ActionEvent ae) {
method();
}
});
inputFrame.setSize(1366,768);
inputFrame.setVisible(true);
}
public static void main(String[]args){
inputGUI();
}
}
你的意思是这样吗?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.