我创建了一个简单的命令行界面服务器应用程序,可以读取System.in
以便进行操作。它接受简单的命令:
START
启动 ServerSocket 并侦听客户端连接。
STOP
,向服务器正在关闭的所有客户端广播,并关闭服务器套接字。
ONLINEUSERS
. 以查看哪个用户处于联机状态。
效果很好。然后,它需要它的 GUI 界面。
假设我Server
带有main()
的类来启动服务器进程(但仍然空闲,因为尚未输入START
命令)和一个带有启动按钮(JButton
)和日志文本区域(JTextArea
)的普通ServerGUI
。
为了尽量减少耦合,是否可以设计一个程序:首先,用其Server.main()
启动服务器;其次,启动ServerGUI;然后,当单击ServerGUI中的启动按钮时,它会自动向进程发送START
命令并启动服务器?
有没有办法实现这一点?
似乎您的问题是试图找到一种方法将数据传输到 System 对象中,以便 System.in 监视器能够获得它。 也许有一种方法可以做到这一点,但这不是我会这样做的方式。
相反,我会使用 STart 按钮注册一个事件处理程序,并让它在服务器类上调用一个方法。
类似以下内容的内容将起作用。
startButton = new javax.swing.JButton();
startButton.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
Server.startSocketAndListen();
}
});