TextField右对齐问题javafx

时间:2014-10-01 06:52:30

标签: java javafx javafx-8

我有一个包含值的文本字段,该值应该是右对齐。

当我运行应用程序时,它显示文本左对齐但我设置了右对齐。 和第三文本域的问题。

单击更新按钮后,它可以正常工作。

所以我可能知道它为什么表现不同。

代码:

    import java.io.File;

import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.scene.layout.VBox;
import javafx.stage.FileChooser;
import javafx.stage.Stage;

public class TextFieldAlignment extends Application {

    TextField rText;

    File file;

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

    @Override
    public void start(Stage stage) {
        rText = new TextField("updated right1 updated right2 updated right3 updated right4");
        rText.setAlignment(Pos.CENTER_RIGHT);

        Button btn = new Button("update");
        btn.setOnAction(new EventHandler<ActionEvent>() {
            @Override
            public void handle(ActionEvent t) {
                rText.setText("updated right1 updated right2 updated right3 updated right4");

//              applyWorkaround();
            }
        });     

        final Label labelFile = new Label();

          Button btn2 = new Button();
          btn2.setText("Open FileChooser'");
          btn2.setOnAction(new EventHandler<ActionEvent>() {

              @Override
              public void handle(ActionEvent event) {
                  FileChooser fileChooser = new FileChooser();

                  //Set extension filter
                  FileChooser.ExtensionFilter extFilter = new FileChooser.ExtensionFilter("AVI files (*.exml)", "*.exml");
                  fileChooser.getExtensionFilters().add(extFilter);

                  //Show open file dialog
                  file = fileChooser.showOpenDialog(null);

//                rText.setText(file.getPath());
              }
          });

        VBox root = new VBox();
        root.getChildren().addAll(rText, btn, btn2);

        stage.setScene(new Scene(root, 200, 300));
        stage.show();
    }

}

1 个答案:

答案 0 :(得分:0)

将TextField添加到场景后放置setalignment和settext。

参考:Node的Java API文档

  

可以在任何线程上构建和修改节点对象   它们尚未附加到场景中。应用程序必须附加节点   到场景,并修改已附加到场景的节点   JavaFX应用程序线程。