簡體   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