有一个断开按钮。点击之后,当前的InputStream和OutputStream都关闭了,服务端和客户端的连接断开了。问题是如何组织禁用按钮,使其仅在客户端连接到服务器时才处于活动状态?附上控制器和套接字代码。
控制器:包装样品;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.scene.control.Button;
import javafx.scene.control.TextField;
import java.io.IOException;
public class Controller
{
@FXML
TextField myTextField;
@FXML
Button buttonOff;
public void myBreakСonnection(ActionEvent event)
{
try {
MySocket.inputStream.close();
MySocket.outputStream.close();
buttonOff.disabledProperty();
} catch (IOException e) {
e.printStackTrace();
}
}
}
主要的:
try
{
s = new ServerSocket(8189);
try(Socket incoming = s.accept())
{
boolean key = MySocket.s.isClosed();
System.out.println(key);
inputStream = incoming.getInputStream();
outputStream = incoming.getOutputStream();
try(Scanner in = new Scanner(inputStream))
{
PrintWriter out = new PrintWriter(outputStream, true);
out.println("Hello! Enter BYE to exit.");
boolean done = false;
while(!done && in.hasNextLine())
{
String line = in.nextLine();
out.println("Echo: " + line);
if(line.trim().equals("BYE")) done = true;
}
}
}
不相关的问题,例如多线程中的静态等,请不要提出。

您可以默认禁用它,并在连接客户端后启用它(通过初始化 key 变量)。并在中断连接的方法中按下时关闭。要在连接意外断开时禁用它,可以将 disable 放在连接断开时抛出的异常的 catch 或 finally 块中