Вызов метода внутри события setOnAction и оценка команд - PullRequest
0 голосов
/ 12 сентября 2018

Вот мой код:

noProxyButton.setOnAction(e -> {
            this.setStatusField("Deactivating proxy...");
            System.out.println("Deactivating proxy...");
            String request = "powershell.exe  "
                        + "-Command \"Set-ItemProperty "
                        + "-path \'HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\' "
                        + "ProxyEnable -value 0";
            try {
                this.runIt(request);
            } catch (IOException ex) {
                Logger.getLogger(MLSOps.class.getName()).log(Level.SEVERE, null, ex);
            }

...

    public void setStatusField(String value){
            statusField.setText(value);
        }

Проблема в том, что setStatusField вызывается после окончания события e.Классическая печать на выходе оценивается и показывает «до» вызова runIt.

Почему setStatusField вызывается так поздно?

1 Ответ

0 голосов
/ 18 сентября 2018

просто используйте темы.Не уверен, что это "ясно" с точки зрения "правил программирования" (возможно, кто-то может ответить на это), но это работает:

Thread t1 = new Thread (new Runnable() {
               @Override
               public void run() {
                   MLSOps.setStatusField("Deactivating proxy...");
               } 
            });
            t1.start();


Thread t2 = new Thread (new Runnable() {
               @Override
               public void run() {
            try {
                runIt();
            } catch (IOException ex) {
                Logger.getLogger(MLSOps.class.getName()).log(Level.SEVERE, null, ex);
            }   
            } 
            });
            t2.start();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...