使用JavaFx8,我有一个发送http请求的按钮。我想禁用此按钮,直到我收到服务器的答复。我的情况如下:

HBox boxRep = new HBox();
...
boxRep.setOnMousePressed((event) ->{
      String responseHttpCode = "";
      responseHttpCode = MySendHttp(ip, port, request);
      ...
      });


我的方法(MySendhttp)返回具有http代码状态(200,404 ...)的字符串。在服务器应答之前,我不想发送其他请求。

谢谢

最佳答案

在后台线程中的任务中运行它,并在onSucceeded处理程序中处理响应:

boxRep.setOnMousePressed(event -> {
    Task<String> httpTask = new Task<String>() {
        @Override
        public String call() throws Exception {
            return MySendHttp(ip, port, request);
        }
    };

    Thread thread = new Thread(httpTask);

    httpTask.setOnSucceeded(e -> {
        boxRep.setDisable(false);
        String responseCode = httpTask.getValue();
        // process...
    });


    boxRep.setDisable(true);

    thread.start();
});

09-06 04:29