我有 Pane 和 Label 。
如何设置 Label 的 layoutXProperty 以便它在X行的Center中?
我想我应该使用这样的公式:(Pane.width-Label.width)/ 2
但我不知道它是如何正确写的。我还没有在谷歌找到答案。
有人可以暗示我吗? thxs。
UPD。如果声明我更新标签的文本,它的文本可以是不同的长度。所以我想将 layoutXProperty 设置为取决于文本的长度,并且将在CENTER上。
UPD:已插入代码
public void start(Stage myStage) throws FileNotFoundException {
myStage.setTitle("OrthographyChecker");
Pane pane = new Pane();
Scene scene = new Scene(pane, 700, 300);
Label labelUp = new Label();
labelUp.setFont(new Font(fontSize));
labelUp.layoutXProperty().bind(pane.widthProperty().subtract(labelUp.widthProperty()).divide(2));
labelUp.layoutYProperty().bind(pane.heightProperty().subtract(labelUp.heightProperty()).divide(5));
labelUp.setText("Click to start");
pane.getChildren().addAll(labelUp);
TextField inputTxt = new TextField("");
inputTxt.setVisible(false);
inputTxt.layoutXProperty().bind(pane.widthProperty().subtract(inputTxt.widthProperty()).divide(2));
inputTxt.layoutYProperty().bind(labelUp.layoutYProperty().add(35));
pane.getChildren().addAll(inputTxt);
Label chkL = new Label("");
chkL.setFont(new Font(fontSize));
chkL.layoutYProperty().bind(inputTxt.layoutYProperty().add(30));
chkL.layoutXProperty().bind(pane.widthProperty().subtract(chkL.widthProperty()).divide(2));
chkL.setStyle("-fx-border-color: blue;");
pane.getChildren().addAll(chkL);
inputTxt.setOnKeyPressed(event -> {
if (event.getCode().equals(KeyCode.ENTER)) {
try {
for (String OneWrd : chkWrd[0].replace(", ", ",").split(",")) {
if (inputTxt.getText().equalsIgnoreCase(OneWrd)) {
chkL.setText("You are right!");
chkL.setVisible(true);
notfound[0] = false;
break;
}
}
if (notfound[0]){
chkL.setText("Wrong! Right answer: \"" + chkWrd[0] + "\"");
chkL.setVisible(true);
}
} catch (Exception e) {
errPrint(e, "Установки ожидания ");
}
inputTxt.setText("");
pause[0] = false;
notfound[0] = true;
chkL.layoutXProperty().bind(pane.widthProperty().subtract(labelUp.widthProperty()).divide(2));
}
});
myStage.setScene(scene);
myStage.show();
}
代码的一部分,使用它的标签麻烦(变量 chkL )。正如你所看到的,我把它绑定到中心,就像另一个标签一样。但是这个标签在标签更改文本的第一次迭代后改变了alingment,并开始看起来像that screen (label in border) 而我正试图解决它的问题。绑定有效,但不像我期待的那样
答案 0 :(得分:1)
标记中心的正确方法是使用布局窗格并配置窗格和/或标签,使其居中。例如,如果您希望标签水平居中位于布局顶部(或布局的某个区域),则可以使用{
aps = {
alert = {
title = "e-mission-phone";
};
"content-available" = 1;
};
notId = 1506359243823816;
payload = {
notId = 1506359243823816;
};
}
,如下所示:
BorderPane
如果您选择使用,可以使用Scene Builder进行此处的所有设置。