繁体   English   中英

BorderPane不会显示ListView JavaFx

[英]BorderPane won't show ListView JavaFx

我有一个由BorderPane底部形成的窗口,一个用于放置一些标签的West Side的VBox,一个用于放置文本字段和ListView的East Side的VBox,一个在南部放置一些按钮的HBox。

问题是无论如何我放置此ListView我只能看到一行。 将填充ListView。

如果我使用GridPane,它会显示ListView,但所有内容均放置错误。

BorderPane的外观如下:

这是代码:

window2.setTitle("Update Category");

            List<Skill> listSlill=(new SkillCrud()).allS();

            ObservableList<Skill> items = FXCollections.observableArrayList
                    (listSlill);
            skillListView = new ListView<>(items);

            //System.out.println((new SkillCrud()).allS()+"  --  "+skillListView.getItems());


            Label categoryLabel = new Label("Category: ");
            categoryLabel.setFont(Font.font("Arial", FontWeight.BOLD, 14));
            categoryLabel.setTranslateY(30);

            Label skillLabel = new Label("Skill: ");
            skillLabel.setFont(Font.font("Arial", FontWeight.BOLD, 14));
            skillLabel.setTranslateY(40);

            TextField categoryField = new TextField();
            categoryField.setText(up.getName());

            VBox lefta = new VBox();
            lefta.getChildren().addAll(categoryLabel,skillLabel);
            //lefta.setPadding(new Insets(0, 0, 0, 30));

            VBox righta = new VBox();
            righta.getChildren().addAll(categoryField,skillListView);

            HBox downa = new HBox();
            Button updateButton = new Button("Update");
            Button cancelButton = new Button("Cancel");

            updateButton.setMaxWidth(Double.MAX_VALUE);
            cancelButton.setMaxWidth(Double.MAX_VALUE);

            cancelButton.setPrefSize(75, 20);
            cancelButton.setTranslateX(20);

            updateButton.setPrefSize(75, 20);
            updateButton.setTranslateX(45);

            downa.setSpacing(40);
            //downa.setPadding(new Insets(0, 10, 8, 25));

            downa.getChildren().addAll(cancelButton, updateButton);

            //righta.setSpacing(10);
            //righta.setPadding(new Insets(20, 30, 0, 0));
            righta.setAlignment(Pos.BASELINE_LEFT);


//          GridPane grid = new GridPane();
//          
//          grid.setAlignment(Pos.CENTER);
//          grid.setHgap(10);
//          grid.setVgap(10);
//          grid.setPadding(new Insets(25, 25, 25, 25));
//          
//          
//          grid.add(categoryLabel, 0, 1, 2, 2);
//          grid.add(categoryField, 1, 1, 2, 2);
//          
//          grid.add(skillLabel, 0, 2);
//          grid.add(skillListView, 1, 2);




            BorderPane layout = new BorderPane();
            layout.setLeft(lefta);
            layout.setRight(righta);
            layout.setBottom(downa);

Scene scene2 = new Scene(layout, 300, 300);
//          window2.setMaxWidth(300);
//          window2.setMaxHeight(300);
//          window2.setMinWidth(300);
//          window2.setMinHeight(300);
            window2.setScene(scene2);
            window2.showAndWait();

这是一个mcve ,它使调试和获得帮助变得更加容易:

 public class StageTest extends Application{

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

    @Override
    public void start(Stage stage) throws Exception {

        stage.setTitle("Update Category");
        ObservableList<String> items
                    = FXCollections.observableArrayList(createStrings());
        ListView<String>  skillListView = new ListView<>(items);

        TextField categoryField = new TextField();
        categoryField.setText("Category");

        VBox righta = new VBox();
        righta.getChildren().addAll(categoryField,skillListView);
        righta.setAlignment(Pos.BASELINE_LEFT);

        BorderPane layout = new BorderPane();
        layout.setRight(righta);

        Scene scene2 = new Scene(layout, 300, 300);
        stage.setScene(scene2);
        stage.show();
    }

    private List<String> createStrings() {
        return IntStream.rangeClosed(0, 5)
                .mapToObj(i -> "Skill "+i)
                .map(String::new)
                .collect(Collectors.toList());
    }
} 

运行它,然后查看问题。
删除righta.setAlignment(Pos.BASELINE_LEFT); 并解决了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM