所以我有一个MainWindow.java,它创建了包含所有控件和事物的窗口。我在窗口上放置了菜单栏对象,菜单栏中的其中一个选项是使程序成为服务器。因此,这里的主窗口如下所示:使用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课程中。我不能,因为它说
Cannot make a static reference to the non-static method function() from the type MainWindow
我甚至试图把所有的Server类代码到MainWindow类或它上面,但Java的不喜欢,并表示这样做MainWindow.function()即使调用MainWindow功能希望它在一个单独的文件。
我到底该如何在Server类中引用MainWindow函数?还是有更好的方法来解决这个问题?
2014-03-25
Richard