在JavaFX中对齐TextArea的内容

卡尔达诺

我正在出于培训目的制作一个简单的文本编辑器。我想创建一个按钮,使我的文本输入居中,TextArea就像在MS Word中一样。我在FXML中有我的按钮,但是我不知道应该为我的TextArea对象使用哪种方法,我尝试过setStyle()getChild()但是都没有用。

<Button onAction="#toTheCenter"  text="center"/>

那就是我在FXML中的按钮

<center>
    <TextArea fx:id="textArea"/>
</center>

那是 TextArea

@FXML
private void toTheCenter(ActionEvent event){
    String text = textArea.getText();
}

多数民众赞成从控制器的方法。

詹姆斯_D

您需要在文本区域的文本节点上设置-fx-text-alignment属性

动态执行此操作的最佳方法是为文本区域定义一个自定义CSS伪类:

PseudoClass centered = PseudoClass.getPseudoClass("centered");

然后在您的外部CSS文件中,您可以执行

.text-area:centered .text {
    -fx-text-alignment: center ;
}

那你可以打电话

textArea.pseudoClassStateChanged(centered, true);

开启居中

textArea.pseudoClassStateChanged(centered, false);

将其关闭。

这是一个SSCCE(将上面的CSS代码放在中centering-text-area.css):

import javafx.application.Application;
import javafx.css.PseudoClass;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.TextArea;
import javafx.scene.control.ToggleButton;
import javafx.scene.layout.BorderPane;
import javafx.stage.Stage;

public class TextAreaWithCentering extends Application {

    @Override
    public void start(Stage primaryStage) {

        TextArea textArea = new TextArea();

        PseudoClass centered = PseudoClass.getPseudoClass("centered");

        ToggleButton center = new ToggleButton("Center");
        center.selectedProperty().addListener((obs, wasCentered, isNowCentered) -> 
                textArea.pseudoClassStateChanged(centered, isNowCentered));

        BorderPane.setAlignment(center, Pos.CENTER);
        BorderPane.setMargin(center, new Insets(5));
        BorderPane root = new BorderPane(textArea, null, null, center, null);

        Scene scene = new Scene(root, 600, 600);

        scene.getStylesheets().add("centering-text-area.css");

        primaryStage.setScene(scene);
        primaryStage.show();
    }

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章