JavaFX textArea.setText не работает в цикле - PullRequest
0 голосов
/ 06 марта 2019

У меня есть функция с именем doWrite, которая в основном представляет действие кнопки.В этой функции, внутри цикла for, txtShow.setText (st.toString ()) не показывает никаких данных в графическом интерфейсе, но то же самое видно на консоли, использующей System.out.println, я также использовал txtShow.setText вконец функции для печати «блок успешно записан», но это успешно отображается в графическом интерфейсе.Я хочу знать, почему он не работает для цикла.

Часть кода контроллера:

 @FXML
    void doWrite(ActionEvent event) throws IOException, InterruptedException {
        //txtShow.setText("Scan your card");
        OutputStream os=s1.getOutputStream();
        String messageString ="%"+txtBlock.getText()+txtData.getText(); 
        os.write(messageString.getBytes());
        //System.out.println(messageString);
        os.flush();
        os.close();

    Thread.sleep(2000);

    InputStream is=s1.getInputStream();

    StringBuilder st = new StringBuilder();


        for(int i=0,x=0;true;i++){
        char a=(char)is.read();
        if(a == '@'){

            txtShow.setText(st.toString());
            System.out.print(st.toString());
         st.setLength(0);
            Thread.sleep(5000);
            continue;
        }
        if(a == '*')
        {
            break;
        }

        st=st.append(a);
    }
    System.out.print( st.toString());
    txtShow.setText("Block written successfully");
    //doAlert("Block written successfully !");

}

Основной код:

package Cards;

import java.io.IOException;
import java.io.InputStream;
import java.lang.reflect.InvocationTargetException;

import com.fazecast.jSerialComm.SerialPort;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.stage.Stage;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.layout.BorderPane;
import javafx.scene.paint.Color;

public class cardMain extends Application {
    //static boolean x=true;



    @Override
    public void start(Stage primaryStage) {
        try {
            Parent root=FXMLLoader.load(getClass().getResource("card.fxml")); 
            Scene scene = new Scene(root);
            scene.setFill(Color.NAVY);  
            primaryStage.setTitle("Student Registration"); 
            primaryStage.setScene(scene);
            primaryStage.show();

            } 
        catch(Exception e) {
            e.printStackTrace();
        }
        }

    public static void main(String[] args) throws IOException, InterruptedException{


         launch(args);

        }


        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...