JavaFX - 只显示一个标签

时间:2017-04-12 06:20:00

标签: java javafx position label missing-data

编辑:为标签1&编辑解决,意外撕开X和Y值2

我正在使用JavaFX创建一个叠加层,但出于某种原因,我的两个标签丢失而一个完全正常。这很奇怪,因为它们都具有相同的y值(setLayoutY),并且只成功显示了一个标签。将标签1的y值从536更改为500时,它会显示,但会被删除。

标签1的setLayoutY(536)时:http://i.imgur.com/M5NxQoa.png 当标签2的setLayoutY(500):http://i.imgur.com/heJDopx.png

这很奇怪,因为它在窗格和阶段大小内都很好(顺便说一下,哪一个优先)。另一方面,标签2具有相同的y值536并显示,但其余的则不显示。

我真的希望这不是一个简单的错误,因为我没有看到我做错了什么。为什么会发生这种情况,我该如何解决?谢谢!

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.layout.Pane;
import javafx.stage.Stage;
import javafx.stage.StageStyle;
import javafx.scene.paint.Color;

public class Overlay extends Application {

    @Override
    public void start(Stage primaryStage) throws Exception {
        Pane root = new Pane();
        root.setPrefSize(765,596);

        Label label1 = new Label("why does");
        label1.setLayoutX(97);
        label1.setLayoutY(536);
        label1.setPrefWidth(57);
        label1.setPrefHeight(184);
        label1.setTextFill(Color.BLACK);

        Label label2 = new Label("this happen");
        label2.setLayoutX(481);
        label2.setLayoutY(536);
        label2.setPrefWidth(184);
        label2.setPrefHeight(57);
        label2.setTextFill(Color.BLACK);

        Label label3 = new Label("-1");
        label3.setLayoutX(289);
        label3.setLayoutY(536);
        label3.setPrefWidth(57);
        label3.setPrefHeight(184);
        label3.setTextFill(Color.BLACK);


        root.getChildren().addAll(label1, label2, label3);

        Scene scene = new Scene(root, 765, 596, Color.TRANSPARENT);
        scene.setFill(Color.TRANSPARENT);
        primaryStage.setScene(scene);
        primaryStage.initStyle(StageStyle.TRANSPARENT);
        primaryStage.setAlwaysOnTop(true);
        primaryStage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }

}

1 个答案:

答案 0 :(得分:0)

在所有标签中设置相同的PrefHeight

label1.setPrefHeight(57);
label2.setPrefHeight(57);
label3.setPrefHeight(57);