gpt4 book ai didi

java - 非静态变量 this 不能从静态上下文 JFrame 中引用

转载 作者:太空宇宙 更新时间:2023-11-04 14:36:40 25 4
gpt4 key购买 nike

我有这个代码:

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);
}

我想向我的 JButton 添加一个名为

的 Action 监听器
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 的单击事件。假设 MainClass 负责这一点。更改您的代码如下:

 printButton.addActionListener(new MainClass());

替代解决方案:
使 inputGUI() 非静态。并从 main 方法中调用它作为 new MainClass().inputGUI()。休息保持不变。

关于java - 非静态变量 this 不能从静态上下文 JFrame 中引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25488090/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com