我是Java和JavaFX的新手,所以请原谅我的新手问题.我过去几天搜索了我想要做的事情的例子,但一直找不到任何答案.这是我想要做的:我正在尝试使用将连接到服务器并发送/接收数据的场景构建器创建一个简单的javafx GUI客户端套接字应用程序.很简单,但是当我尝试在Java FX中实现它时,我的GUI冻结了.我研究并发现原因是套接字通信一直在占用,而javafx GUI无法更新.我的研究指出我使用任务.所以,我创建了一个创建任务的简单应用程序,连接到互联网套接字(端口80),发送命令"GET/HTTP/1.1\r \n\r \n",它将请求页面然后打印出来收到的每一行.问题是我想一遍又一遍地做这件事(每3秒钟).任务成功运行一次,但随后停止.在下面的代码中,永远不会到达使线程进入休眠状态的行,但是打印任何错误的行也不会发送到system.out.
这是控制器代码
package clientSocketExample;
import java.io.*;
import java.net.*;
import java.util.ResourceBundle;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.*;
import javafx.concurrent.Task;
/**
* Controller class of the HelloWorld sample.
*/
public class ClientSocketExampleController implements Initializable
{
@FXML
Button button;
private boolean keepRunning = true;
/**
* Initializes the controller class.
*/
@Override
public void initialize(URL url, ResourceBundle rsrcs)
{
if (button != null)
{
button.setOnAction(new EventHandler<ActionEvent>()
{
@Override
public void handle(ActionEvent event)
{
keepRunning …Run Code Online (Sandbox Code Playgroud)