如何从JavaFX服务中安全地更新JavaFX GUI上的小部件.我记得当我使用Swing进行开发时,我曾经“稍后调用”和其他各种swing工作器实用程序,以确保在Java事件线程中安全地处理对UI的所有更新.以下是处理数据报消息的简单服务线程的示例.缺少的位是解析数据报消息的位置,并更新相应的UI小部件.正如您所看到的,服务类非常简单.
我不确定是否需要使用简单的绑定属性(如消息),或者我应该将小部件传递给我的StatusListenerService的构造函数(这可能不是最好的事情).有人可以给我一个很好的类似例子,我可以从中工作.
public class StatusListenerService extends Service {
private final int mPortNum;
/**
*
* @param aPortNum server listen port for inbound status messages
*/
public StatusListenerService(final int aPortNum) {
this.mPortNum = aPortNum;
}
@Override
protected Task createTask() {
return new Task() {
@Override
protected Void call() throws Exception {
updateMessage("Running...");
try {
DatagramSocket serverSocket = new DatagramSocket(mPortNum);
// allocate space for received datagrams
byte[] bytes = new byte[512];
//message.setByteBuffer(ByteBuffer.wrap(bytes), 0);
DatagramPacket packet = new DatagramPacket(bytes, bytes.length);
while (!isCancelled()) {
serverSocket.receive(packet);
SystemStatusMessage message = new SystemStatusMessage();
message.setByteBuffer(ByteBuffer.wrap(bytes), 0);
}
} catch (Exception ex) {
System.out.println(ex.getMessage());</