2017-04-21 1 views
1

Y a-t-il un moyen de faire défiler le contenu du bouton déroulant? J'ai beaucoup d'éléments de menu qui étendent la liste déroulante au-delà de l'écran de l'appareil.Bouton déroulant Gluon Mobile Scrollable

try { 
     DropdownButton merchantChooser = (DropdownButton) this.view.lookup("#review-merchant-chooser"); 
     VBox container = (VBox) this.view.lookup("#review-container"); 
     TextArea area = (TextArea) this.view.lookup("#review-text"); 
     StackPane sp = (StackPane) this.view.lookup("#review-wrapper"); 
     Button btn = (Button) this.view.lookup("#review-submit"); 

     Utility.setBackground(sp, Utility.bannerImg2); 
     Utility.setFadedBackground(true, container); 

     merchantChooser.getItems().clear(); 
     if (MainView.merchants.isInitialized()) { 
      btn.setDisable(false); 
      MenuItem firstItem = null; 

      for (int i = 0; i < MainView.merchants.size(); i++) { 
       Label label = new Label(MainView.merchants.get(i).getName()); 
       label.setWrapText(true); 
       MenuItem item = new MenuItem(label.getText()); 

       merchantChooser.getItems().add(item); 

       if(i == 0) 
        firstItem = item; 
      } 

      merchantChooser.setSelectedItem(firstItem); 
      merchantChooser.setPrefWidth(200); 
     } 
     else 
     { 
      btn.setDisable(true); 
     } 

     btn.setOnMouseClicked(e -> { 
      //ENTER BACKEND POST HERE TO SEND REVIEW TO DATABASE!! 
     }); 

    } catch (NullPointerException nex) { 
     System.out.println("Null pointer at AddReviewView"); 
    } catch (Exception ex) { 
     System.out.println("Other exception in discount view"); 
     System.out.println(ex.getMessage()); 
    } 

Répondre

1

Si vous avez beaucoup d'articles, peut-être le DropdownButton n'est pas le meilleur contrôle pour le travail. Cela ne permet pas de le faire défiler. Vous pouvez jeter un oeil à d'autres options, comme le PopupView

Ce contrôle permet un contenu personnalisé, de sorte que vous pouvez ajouter un ScrollPane avec un VBox qui contiendra tous les éléments. Au lieu des contrôles MenuItem, vous pouvez utiliser les Button réguliers.

Ceci est une implémentation rapide, mais il est également dénommé DropdownButton.

public BasicView(String name) { 
    super(name); 

    Button button = new Button("Click me", new Icon(MaterialDesignIcon.ARROW_DROP_DOWN)); 
    button.getStyleClass().add("flat"); 
    button.setStyle("-fx-border-color: lightgray; -fx-border-width: 0 0 1 0"); 
    button.setContentDisplay(ContentDisplay.RIGHT); 

    PopupView popup = new PopupView(button); 

    VBox vBox = new VBox(); 
    for (int i = 0; i < 100; i++) { 
     Button item = new Button("item " + i); 
     item.setPrefWidth(100); 
     item.getStyleClass().add("flat"); 
     item.setOnAction(e -> { 
      System.out.println("item " + item.getText()); 
      popup.hide(); 
     }); 
     vBox.getChildren().add(item); 
    } 
    ScrollPane scrollPane = new ScrollPane(vBox); 
    scrollPane.setMaxHeight(200); 
    scrollPane.setPrefWidth(110); 

    popup.setContent(scrollPane); 

    button.setOnAction(event -> popup.show()); 

    setCenter(button); 
} 

+0

Merci José. Cela a bien fonctionné. –