私はペインとラベルを持っています。 設定方法layoutXPropertyラベルセンターライン上にX線があるように設定しますか? 私はこのような式を使うべきだと思う:(Pane.width-Label.width)/ 2
しかし、私はそれがどのように正しいのか分からない。私はGoogleで答えを見つけていない。JavaFx;ラベルセンターは幅に依存します
私はいくつかのヒントを得ますか? thxs。
Upd。ラベルのテキストは宣言の後に更新され、テキストは異なる長さにすることができます。ですから、layoutXPropertyをテキストの長さに応じて設定したいと思い、CENTERになります。
UPD:コードは、それは障害ラベル(変数CHKL)それを使用するコードの一部、
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();
}
を挿入しました。あなたが見ることができるように、私は別のラベルのように、それをセンターにバインドしました。しかし、このラベルはラベルの変更テキストの最初の反復の後にalingmentを変更し、that screen (label in border) のように見え始め、正確にそれを解決しようとしています。バインドはうまくいきませんが、私は期待している通りではありません
[layout pane](http://docs.oracle.com/javase/8/javafx/layout-tutorial/builtin_layouts.htm#JFXLY102)を使用する代わりに、なぜ「layoutX」を手動で設定しているのですか?それはラベルを中心にする? –
実際に私は知らない。私は教育目的のためにプログラムを作成しましたが、今は最後にそれを詳述しています。しかし、もし私が実現の道を変えたら、とにかくそれはどうしたらいいのか知りたいのです –
あなたは単にこれをあなたが描写するようにしてはいけません。あらかじめ定義されたレイアウトペインを使用するか、独自の 'Pane'サブクラスを作成して、さまざまなレイアウトメソッド(特に' layoutChildren() ')をオーバーライドする必要があります(上級)。あなたが望むことをする適切なレイアウトペインはほとんどありません。 –