我正在尝试在控制器的中心、左侧和右侧设置 textArea 内的文本对齐方式,但没有一个有效。
我当前的代码很简单,对于中心方法,我在方法内部使用它:
textArea.setStyle("-fx-text-alignment: center");
但这没有任何改变。
有没有更好的方法来解决这个问题?
1 回答
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
属性的组件的方法。
在我看来,这个解决方案显然不如这个答案干净。(我链接到评论中的那个)
于 2018-12-27T13:49:12.677 回答