使用 css 在 TextArea 内设置文本对齐不起作用

Posted

技术标签:

【中文标题】使用 css 在 TextArea 内设置文本对齐不起作用【英文标题】:Set text alignment inside the TextArea using css is not working 【发布时间】:2019-05-25 06:14:14 【问题描述】:

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

【问题讨论】:

***.com/questions/12831101/format-text-in-a-textarea ? textArea.setStyle("-fx-text-alignment: center !important");使用一次。 你为什么使用 fx 和 text-alignment: center; textArea.setStyle("text-align: center !important"); @CertainPerformance 我的问题是关于 JavaFx 中的 css 【参考方案1】:

我以前读过这些,它们是不同的,一种用于标签,一种用于通过外部 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 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 方法,它使您能够检索理解-fx-text-alignment 属性的组件。

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

【讨论】:

以上是关于使用 css 在 TextArea 内设置文本对齐不起作用的主要内容,如果未能解决你的问题,请参考以下文章

在 HTML/XHTML TextArea 中对齐文本

java中TextArea/JTextArea的对齐方式怎么设置的?

table表格中如何让文字左对齐

怎么用CSS样式使文本居中对齐

HTML,CSS:将按钮内的文本与图像对齐[重复]

html 怎么设置table内的字体 颜色 大小 对齐方式!!!!!!!!!!!!!!!!!!!