Проблемы пограничной панели - PullRequest
0 голосов
/ 19 января 2020

Я хочу создать граничную панель с двумя HBoxes сверху и снизу и GridPane в центре ... Я написал то, что мне нужно, прикрепил метки, но не могу запустить Исключение кода в методе запуска приложения java .lang.reflect.InvocationTargetException - то, что я получаю как ошибку ... код ниже, любая помощь приветствуется :) спасибо

public class labelBorder extends Application {

    @Override
    public void start(Stage primaryStage) {

        BorderPane bp = new BorderPane();
        bp.setPrefSize(400, 400);

        HBox hb1 = new HBox();
        Label lb1 = new Label("");
        lb1.setPrefWidth(200);
        lb1.setBorder(new Border(new BorderStroke(Color.AQUAMARINE,BorderStrokeStyle.SOLID,null,new BorderWidths(5))));
        Label lb2 = new Label("");
        lb2.setPrefWidth(200);
        lb2.setBorder(new Border(new BorderStroke(Color.BLUEVIOLET,BorderStrokeStyle.SOLID,null,new BorderWidths(5))));


        HBox hb2 = new HBox();
        URI foto = Paths.get("D:\\Barca.jpg").toUri();
        Label lb3 = new Label();
        lb3.setGraphic(new ImageView(foto.toString()));
        lb3.autosize();

        GridPane gp = new GridPane();
        Label lb4 = new Label("");
        Label lb5 = new Label("");
        Label lb6 = new Label("");
        Label lb7 = new Label("");

        gp.add(lb4, 0, 0);
        gp.add(lb5, 0, 1);
        gp.add(lb6, 1, 0);
        gp.add(lb7, 1, 1);

        gp.getChildren().addAll(lb4,lb5,lb6,lb7);           
        hb1.getChildren().addAll(lb1,lb2);
        hb2.getChildren().addAll(lb3);


        bp.setTop(hb1);
        bp.setCenter(gp);
        bp.setBottom(hb2);
        bp.getChildren().addAll(hb1,hb2,gp);

        Scene scene = new Scene(bp);
        primaryStage.setScene(scene);
        primaryStage.show();

    }

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

1 Ответ

0 голосов
/ 19 января 2020

Вы должны НЕ добавить дубликаты дочерних элементов управления в родительский макет (панель). Ваш код должен выдавать,

java .lang.IllegalArgumentException: Дети: добавлены дубликаты детей

Чтобы преодолеть вашу проблему, удалите эти строки,

gp.getChildren().addAll(lb4,lb5,lb6,lb7);

И,

bp.getChildren().addAll(hb1,hb2,gp); 

Поскольку эти элементы управления уже добавлены в соответствующий макет.

Примечание. Добавление дочерних элементов с pane.getChildren().addAll(...) на BorderPane не имеет значения и будет игнорироваться при рендеринге добавленных элементов управления.

...