我有窗格和標籤就可以了。 如何設置layoutXProperty的標籤這樣它會在X線上居中? 我想我應該使用這樣的公式:(Pane.width-Label.width)/ 2
但我不知道它是如何編寫的。我還沒有找到在谷歌的答案。JavaFx;標籤中心取決於寬度
有人可以暗示我嗎? thxs。
Upd。如果聲明後我更新標籤的文本,它的文本可以是不同的長度。所以我想設置layoutXProperty它取決於文本的長度,並將在中心。
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)。正如你所看到的,我已經將它綁定到了中心,就像另一個標籤一樣。但是這個標籤在標籤變化文本的第一次迭代後改變了標註,並且開始看起來像that screen (label in border) ,我正試圖解決它的確切問題。綁定工程,但不像我期待的那樣
爲什麼您要手動設置'layoutX',而不是使用[佈局窗格](http://docs.oracle.com/javase/8/javafx/layout-tutorial/builtin_layouts.htm#JFXLY102)並配置它以標籤爲中心? –
其實我不知道。我已經爲教育目的創建了這個程序,現在它最後被刪除了。但是,如果我會改變實現方式,無論如何,我想知道它是如何做到這一點 –
你根本不應該這樣描述你的方式。您應該使用預定義的佈局窗格,或者(高級)您應該創建自己的Pane子類並覆蓋各種佈局方法(特別是'layoutChildren()')。幾乎可以肯定的是一個合適的佈局窗格可以實現您想要的功能。 –