我正在尝试在textArea中设置控制器中居中,左,右的文本对齐方式,但是没有任何作用。
我当前的代码很简单,对于中心方法,我在方法内部使用了此方法:
textArea.setStyle("-fx-text-alignment: center");
但这没什么改变。
有没有更好的方法来解决此问题?
答案 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干净。 (我链接到评论中的那个)