gpt4 book ai didi

Java 使用 MainWindow 函数

转载 作者:行者123 更新时间:2023-12-01 13:13:32 27 4
gpt4 key购买 nike

所以我有一个 MainWindow.java 来创建包含所有控件和内容的窗口。我在窗口上放置了一个菜单栏对象,菜单栏中的选项之一是使程序成为服务器。主窗口如下所示:

public class MainWindow extends javax.swing.JFrame {
//all code including menubar click action handler
//Server.start()
}

当您单击该选项时,它将进入 Server.java 类并启动服务器。这是该类的骨架:

public class Server {

public static void start(String port) {
try {
startServer(Integer.parseInt(port));
} catch (Exception e) {
e.printStackTrace();
}
}

public static void startServer(int PORT) throws Exception {
...
}

private static class ClientListenThread extends Thread {

public ClientListenThread(Socket socket, int ClientNumber){
...
}

public void run() {
...
}
}

private static class ServerSendThread extends Thread {

public ServerSendThread(Socket socket) {
...
}

public void run() {
...
}
}
}

现在的问题是,一旦它进入 Server 类,它就会监听连接并连接良好,但我就是无法返回 MainWindow 类。它位于Server 类中。我什至无法通过执行 MainWindow.function() 来调用 MainWindow 函数,因为它说

Cannot make a static reference to the non-static method function() from the type MainWindow

我什至尝试将所有 Server 类代码放入 MainWindow 类中或就在它的上方,但 Java 不喜欢这样,并表示它希望将其放在一个单独的文件中。

如何从 Server 类中引用 MainWindow 函数?或者有更好的方法来解决这个问题吗?

最佳答案

您需要使用 MainWindow m = new MainWindow() 实例创建 MainWindow 类的实例,然后将函数调用为 m.function(),或将您的函数声明为静态。

静态意味着您可以在不创建对象实例的情况下调用函数。这就是您收到错误的原因,因为您的函数不是静态的,因此它需要调用对象的实例。

您还需要确保 MainWindow 类已导入到 Server 类中。

关于Java 使用 MainWindow 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22646567/

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