我们正在开发一个客户端 - 服务器应用程序,它必须与GUI和CLI一起工作。 我们对命令行界面没有问题,但是我们很难用JavaFX来实现它:JavaFx和套接字监听器
我们的服务器发送一些对象给客户端(通过套接字)并且这些都必须被处理。
这是我们SocketServerListener(和作家):
public class SockeServerListener extends Thread implements ServerListener{
private CliController controller;
private ObjectInputStream in;
private ObjectOutputStream out;
public SocketServerListener(Socket server, CliController controller) throws UnknownHostException, IOException {
this.controller = controller;
this.out = new ObjectOutputStream(server.getOutputStream());
this.in = new ObjectInputStream(server.getInputStream());
}
public void publishMessage(String message) throws IOException, RemoteException {
out.writeObject(message);
out.flush();
}
public void run() {
try {
while (true) {
Dialogue dialogue = (Dialogue) in.readObject();
controller.parseDialogue(dialogue);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
的SocketServerListener由控制器是谁执行谁“执行”所接收的对象的一个实例,更新界面(CLI/GUI)
public void parseDialogue(Dialogue dialog) {
dialog.execute(view); //view is an interface extended by both the Cli and GUI
this.canWrite = true;
}
正如我所说的,这个作品非常好与CLI,但它抛出一个异常,使用JavaFX
Exception in thread "Thread-7" java.lang.IllegalStateException: Not on FX application thread; currentThread = Thread-7
我们尝试使用用于生成所有GUI作为控制器的Class,但没有任何(正面)结果。 我们如何实例化一个线程,以便它可以使用JavaFX并调用显示我们需要的屏幕的方法?
谢谢