2017-06-11 1 views
0

J'ai une fenêtre formée d'un BorderPane à la base, une VBox pour le West Side où je place des labels, une autre VBox pour l'East Side où je place un textfield et un ListView, un HBox avec quelques boutons placés dans le sud.BorderPane ne montrera pas ListView JavaFx

Le problème est que de toute façon je place ce ListView, je ne peux voir qu'une ligne. Le ListView est rempli.

Si j'utilise GridPane, il affiche ListView mais tout est mal placé.

Voici comment il regarde avec BorderPane:

Voici le code:

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(); 
+1

Veuillez poster [mcve] – c0der

Répondre

0

Voici un mcve qui rend le débogage et obtenir de l'aide beaucoup plus facile:

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()); 
    } 
} 

Exécutez-le et observez Le problème.
Supprimer righta.setAlignment(Pos.BASELINE_LEFT); et le voir résolu.