Textfield的线程检查更改

时间:2018-06-18 18:28:55

标签: java multithreading textfield

我尝试对两个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同步线程?

0 个答案:

没有答案