我尝试对两个Textfields的输入作出反应,并根据输入的内容我启用或禁用某些按钮
下面的代码片段应该这样做,但问题是它每次启动程序时都不起作用。
有时它可以工作(按钮被启用和禁用正确)有时如果我在文本字段中键入相同的输入它什么都不做。
在实践中它即将插入一个端口和一个IP。
根据输入,应该有按钮setDisable或setEnable
我观看了有关线程的相同教程,看看我的基本线程构造是否正确。我无法找到我的错误或暗示我的错误,所以如果有人能给我一个暗示,为什么我的程序会这样反应我会很感激
我对Threading的工作并不多,如果这些信息有用,我会在eclipse中启动我的程序。
代码段:
public static void threadSettings(String args[]) {
Task<Void> checkChangeSettings = new Task<Void>() {
// MinZeichen da minimale Ip bei Ipv6 0::1
// Annahe kann falsch sein
int minZeichenIP = 2;
@Override
protected Void call() throws Exception {
while(true) {
// If the input of the ip and port are done enable
// the Button Client
if((txtIPEingabe.getLength() >= minZeichenIP) &&
(txtPortEingabe.getLength() >= 1)) {
btnClient.setDisable(false);
}
//else disable
else {
btnClient.setDisable(true);
}
//If the input of Port is done and Ip input empty enable
//Button Server
if(txtPortEingabe.getLength() >= 1 && txtIPEingabe.getLength() == 0) {
btnServer.setDisable(false);
}
//else disable
else {
btnServer.setDisable(true);
}
}
}
};
Thread t1 = new Thread(checkChangeSettings);
t1.setDaemon(true);
t1.start();
}
解决了我用于两个Textfields和一个监听器
txtIPEingabe.textProperty().addListener(new ChangeListener<String>() {
@Override
public void changed(ObservableValue<? extends String> arg0,
String arg1, String arg2) { if requests.......
}
});
我仍然感兴趣为什么它在我使用线程时反应奇怪? 我是否必须通过CountDownLatch同步线程?