У меня есть функция с именем 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);
}
}