JavaFX文本字段到文件

JavaFX文本字段到文件,java,file,javafx,javafx-2,Java,File,Javafx,Javafx 2,亲爱的Java爱好者 我尝试用JavaFX制作一个小应用程序,它在文本字段中接受用户输入,单击按钮并将其写入.txt文件 这里的问题是:该程序实际上运行良好,并将用户输入打印到.txt文件中,但它只有在我关闭该程序后才会出现 我可能认为按钮事件处理程序有问题 希望你们中的一些人能找到一个简单的解决办法 public class TextFileOPG extends Application { private Stage switchStage; private static TextFiel

亲爱的Java爱好者

我尝试用JavaFX制作一个小应用程序,它在文本字段中接受用户输入,单击按钮并将其写入.txt文件

这里的问题是:该程序实际上运行良好,并将用户输入打印到.txt文件中,但它只有在我关闭该程序后才会出现

我可能认为按钮事件处理程序有问题

希望你们中的一些人能找到一个简单的解决办法

public class TextFileOPG extends Application {

private Stage switchStage;
private static TextField text1 = new TextField();
private TextField text2 = new TextField();
private Button implFileBtn = new Button("CATCH ME FILE!");

@Override
public void start(Stage primaryStage) {
    try {

            switchStage = primaryStage;

            GridPane root = new GridPane();

            root.setAlignment(Pos.CENTER);

            Text scenetitle = new Text("Welcome");
            scenetitle.setFont(Font.font("Tahoma", FontWeight.NORMAL, 40));
            root.add(scenetitle, 3, 2);

            primaryStage.setTitle("Welcome");
            Scene scene = new Scene(root,350,400);
            primaryStage.setScene(scene);
            primaryStage.show();

            Timeline tick0 = new Timeline();
            tick0.setCycleCount(Timeline.INDEFINITE);
            tick0.getKeyFrames().add(
                    new KeyFrame(new Duration(30), new EventHandler<ActionEvent>() {
                        public void handle(ActionEvent t) {
                            root.setOpacity(root.getOpacity()-0.01);
                            if(root.getOpacity()<0.01){//30divided by 0.01 equals 3000 so you take the duration and divide it be the opacity to get your stansition.
                                loggedIn();
                                tick0.stop();
                            }
                        }}));
            tick0.play();

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

public void loggedIn() 
{
    switchStage.setTitle("Try");

    GridPane grid = new GridPane();

    grid.setAlignment(Pos.CENTER);

    text1.setText("");
    text1.setAlignment(Pos.CENTER);
    Text thisIsSoCoolText = new Text("Enter a text to the file");
    thisIsSoCoolText.setFont(Font.font("Tahoma", FontWeight.NORMAL, 28));
    grid.add(thisIsSoCoolText, 0, 0);


    grid.add(text1, 0, 1);

    HBox hbox = new HBox();

    hbox.getChildren().add(implFileBtn);
    hbox.setAlignment(Pos.CENTER);
    grid.add(hbox, 0, 2);

    implFileBtn.setOnAction(e -> text1.setText(text1.getText()));


    Scene scene = new Scene(grid, 350, 400);
    switchStage.setScene(scene);
    switchStage.show();
}

public static void main(String[] args) {
    launch(args);

    try(PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("myfile.txt", true))))
    {
       out.println(text1.getText());
    }
    catch (IOException e)
    {
       //TO-DO
    }
}
}
问候
Alex

只有在主UI线程完成后才能写入文件。在按钮的EventHandler中移动功能


嘿,伙计!很好的解决方案。它起作用了,有点。问题仍然是,;当我单击我的奇妙按钮时,它不会直接将文本字段写入文件。当我关闭程序时,所有文本突然出现?你有什么解决办法吗?谢谢,这听起来像是前一个版本的行为。试着清理和重建你的项目…我想出来了。这是因为Eclipse没有自动刷新。当我尝试它时,它工作得很好。
implFileBtn.setOnAction(new EventHandler<ActionEvent>() {
    @Override public void handle(ActionEvent e) {
        try (PrintWriter out = new PrintWriter(new BufferedWriter(
                new FileWriter("myfile.txt", true)))) {
            out.println(text1.getText());
        } catch (IOException ioe) {
            ioe.printStackTrace();
        }
    }
});