gpt4 book ai didi

java - 如何从它本身(也是主类)更新GUI?

转载 作者:行者123 更新时间:2023-12-01 11:40:18 24 4
gpt4 key购买 nike

我对用 java 制作桌面应用程序有点陌生,我在 netbeans 中创建了一个项目并创建了 JFrame 作为主类。

这里是代码:

public class qGenGUI extends javax.swing.JFrame {

static funcs fcs;
static String workingDir;

public qGenGUI() {
initComponents();
fcs = new funcs();
workingDir = fcs.getSetting("workingDir", "none");
}

public static void main(String args[]) {

/* Set the Nimbus look and feel */
//Removed part as I assume it's irrelevant.

/* Create and display the form */
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new qGenGUI().setVisible(true);
workingDirLabel.setText(workingDir);
}
});
}

我正在尝试更新 GUI,但它说:

non-static variable workingDirLabel cannot be referenced from a static context

有人可以向我解释一下发生了什么吗?

最佳答案

workingDirLabel 应该从 qGenGUI 类的上下文中访问。最简单的方法是在 qGenGUI 构造函数或“start”方法中启动所有工作。 run 方法在 EDT 上运行,但不在 qGenGUI 类实例的上下文中。

最简单的改变是:

public qGenGUI() {
initComponents();
fcs = new funcs();
workingDir = fcs.getSetting("workingDir", "none");

// in a qGenGUI instance
setVisible(true);
workingDirLabel.setText(workingDir);
}

public static void main(String args[]) {
// not in any instance
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
// in a Runnable instance, but NOT within qGenGUI
new qGenGUI();
}
});
}

现在从 func 和workingDir 变量中删除 static 修饰符。

我建议阅读Lesson: Classes and Objects了解类/实例的基础知识、“静态”的含义(以及非静态成员如何工作)以及上下文/实例“内部”是什么。

关于java - 如何从它本身(也是主类)更新GUI?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29582530/

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