使用 css 在文本区域内设置文本对齐方式不起作用



我正在尝试在控制器中为中心,左侧和右侧设置文本区域内的文本对齐方式,但没有一个正常工作.
我当前的代码很简单,对于中心方法,我在方法中使用它:
textArea.setStyle("-fx-text-alignment: center");
但这没有任何改变.
有没有更好的方法来解决这个问题?

我以前读过这些,它们是不同的,一个用于标签,一个用于通过外部 css 文件执行

实际上,"通过外部css文件执行此操作"是推荐的方法。更清洁、更易读、更好的应用维护。

但是,如果出于某些未知的原因(因为您没有提到它们),您只想通过代码来完成,则可以。这里有一个小MCVE,告诉你如何。

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 blahnnMerry 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方法,它使您能够检索了解-fx-text-alignment属性的组件。

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

最新更新