使用CSS在TextArea中设置文本对齐方式不起作用

时间:2018-12-27 07:22:07

标签: javafx alignment textarea javafx-css

我正在尝试在textArea中设置控制器中居中,左,右的文本对齐方式,但是没有任何作用。
我当前的代码很简单,对于中心方法,我在方法内部使用了此方法:

textArea.setStyle("-fx-text-alignment: center");

但这没什么改变。
有没有更好的方法来解决此问题?

1 个答案:

答案 0 :(得分:1)

  

我以前阅读过这些内容,它们是不同的,一个用于标签,另一个用于通过外部CSS文件进行操作

实际上,“通过外部CSS文件执行操作”是推荐的方法。更加清洁,可读性更好的应用维护。

但是,如果由于某些未知原因(您没有提到它们)而只想通过代码来实现,则可以。这是一个向您展示如何操作的MCVE。

const formatString = 'ddd MMM DD YYYY HH:mm:ss [GMT]ZZ [(Eastern European Standard Time)]';

这里的重点是public class TextAlign extends Application { private TextArea textArea; @Override public void start(Stage primaryStage) throws Exception { BorderPane root = new BorderPane(); // The toggle button for alignment HBox hbToggleContainer = new HBox(10.0); ToggleButton tbAlignLeft = new ToggleButton("Align to left"); ToggleButton tbAlignCenter = new ToggleButton("Align to center"); ToggleButton tbAlignRight = new ToggleButton("Align to right"); ToggleGroup tg = new ToggleGroup(); tg.getToggles().addAll(tbAlignLeft, tbAlignCenter, tbAlignRight); hbToggleContainer.getChildren().addAll(tbAlignLeft, tbAlignCenter, tbAlignRight); hbToggleContainer.setAlignment(Pos.CENTER); root.setTop(hbToggleContainer); textArea = new TextArea("Hello world. Lorem ipsum blah blah\n\nMerry Christmas."); root.setCenter(textArea); tbAlignLeft.selectedProperty().addListener((obs, oldValue, newValue)-> { Node lText = textArea.lookup(".text"); lText.setStyle("-fx-text-alignment: left;"); }); tbAlignCenter.selectedProperty().addListener((obs, oldValue, newValue)-> { Node lText = textArea.lookup(".text"); lText.setStyle("-fx-text-alignment: center;"); }); tbAlignRight.selectedProperty().addListener((obs, oldValue, newValue)-> { Node lText = textArea.lookup(".text"); lText.setStyle("-fx-text-alignment: right;"); }); Scene scene = new Scene(root); primaryStage.setScene(scene); primaryStage.show(); } public static void main(String... args) { Application.launch(args); } } 方法,使您能够检索了解lookup属性的组件。

在我看来,该解决方案显然不如this answer干净。 (我链接到评论中的那个)