gpt4 book ai didi

Java 从另一个类将 JPanel 添加到 JFrame

转载 作者:行者123 更新时间:2023-11-30 07:06:39 26 4
gpt4 key购买 nike

我在从另一个类添加到 JFrame 时遇到问题。在运行时,我初始化 JFrame 并创建它。

public static void main(String[] args) throws IOException {
Testing exc = new Testing();
exc.MessagingGUI();
Update.Server();

Scanner input = new Scanner(System.in);
String some_text = input.nextLine();
exc.AddPanel();
}
public void MessagingGUI() throws IOException {
JPanel welcome = new JPanel();
JLabel title = new JLabel("Stuff");
welcome.add(title);
tab.add("Home", welcome);
pane.add(tab);

Messaging.setTitle("Messaging");
Messaging.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Messaging.setContentPane(pane);
Messaging.setVisible(true);
Messaging.pack();
System.out.println("Done");
}

然后它在不同的类中运行。

public class Update {
public static void Server() {
System.out.println("Hello");
Testing exc =new Testing();
exc.AddPanel();
}
}

现在我知道这是因为 Update 类无法访问 JFrame 但我不知道为什么。它不是 AddPanel 方法,因为如果您输入一些文本,它就会运行,然后允许 AddPanel 方法运行。那么有人可以解释 Update 类如何以及为什么无法编辑 JFrame。谢谢

最佳答案

这是因为您没有为 Update 类提供对所查看 GUI 的足够引用。您需要使服务器方法成为非静态的,并将对测试 GUI 的有效引用传递到更新构造函数中:

public class Update {
private Testing exc;

public Update(Testing exc) {
this.exc = exc;
}

// this shouldn't be static
public void server() {
System.out.println("Hello");
// Testing exc =new Testing(); // Nope!
exc.addPanel(); // rename to addPanel to comply with Java naming rules
}
}

当您创建 Update 实例时,请传入对可视化测试 GUI 的引用。然后在 Update 实例上调用服务器方法,在类上调用服务器方法,因为它不再是静态的。

关于Java 从另一个类将 JPanel 添加到 JFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40003088/

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