将Java菜单栏操作swing到类
我的程序中有一个java菜单栏,只有一个选项和两个子选项,例如File->;保存,关闭。但我的选项不是保存和关闭,而是服务器和客户端。对于第一个选项的动作事件,我有一个java动作监听器:
public class serverAction extends AbstractAction
{
public serverAction()
{
super();
}
public void actionPerformed(ActionEvent e)
{
JOptionPane.showMessageDialog(null, "Test");
}
}
因此,当我点击文件时,它就起作用了->;服务器,它会弹出一个窗口,上面写着测试。现在我有了一个服务器类(我已经单独测试过,并且知道它可以工作),它看起来像这样:
public class SocketServer {
public static void main(String[] args) 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() {
...
}
}
}
现在,当我点击主程序的服务器选项时,我需要调用这个SocketServer
类,这样它就可以启动服务器代码,等待并监听任何客户端连接。我的问题是,如何从serverAction
类开始整个SocketServer
类代码
# 1 楼答案
你的nested-classes是
private
,这意味着它只在ServerSocket
类中可见。因此,您可以提供更具可见性的助手方法,或者更改更具可见性的类声明签名助手方法示例:
在你的行动中
如果你能在客户端连接时发出通知,那就太好了,诸如此类,我建议你看看
SwingWorker
,它提供了有用的工具来处理后台线程和gui线程之间的通知阅读更多:Worker threads and SwingWorker
注意:如果你实现了
Runnable
那就太好了,而不是扩展线程,你没有向线程添加任何特殊功能。没有理由,这里有更多详细信息>"implements Runnable" vs. "extends Thread"