2013-07-01 71 views
1

ListView似乎已經有一個滾動條。我希望滾動條始終可見。原因是因爲我在它上面添加了一個標題,並且在滾動條和標題之間的角落有一個按鈕。我怎樣才能讓ListView滾動條始終顯示?總是顯示垂直滾動條爲JavaFX ListView

回答

2

你可以把它變成一個適當大小的滾動面板和設置滾動窗格爲ALWAYS的直條政策:

@Override 
    public void start(Stage primaryStage) throws Exception { 
    ScrollPane pane = new ScrollPane(); 
    ListView<String> list = new ListView<String>(); 
    ObservableList<String> items = FXCollections.observableArrayList(
      "Single", "Double", "Suite", "Family App"); 
    list.setItems(items); 
    pane.prefWidthProperty().bind(list.widthProperty()); 
    pane.prefHeightProperty().bind(list.heightProperty()); 
    pane.setContent(list); 
    pane.setVbarPolicy(ScrollPane.ScrollBarPolicy.ALWAYS); 
    Group group = new Group(); 
    group.getChildren().add(pane); 
    Scene scene = new Scene(group, 500, 500); 
    primaryStage.setScene(scene); 
    primaryStage.show(); 
    } 
+0

謝謝,但你的代碼示例不做得比較工作。水平滾動也會不必要地顯示出來,並且在列中具有較寬的值時,會被截斷而不是水平滾動條正常工作。 – mentics

+1

我的代碼工作原理:您沒有要求水平滾動條的行爲,但僅針對垂直滾動條。如果你不想讓水平滾動條出現,你應該問這個問題。一個簡單的'pane.setHbarPolicy(ScrollPane.ScrollBarPolicy.NEVER)''然而就足以實現這一點。 – Sebastian

+1

這不是那麼簡單(我希望是)。問題是ListView被自動創建在一個默認的大小,它不符合其內容的大小(我發佈了另一個關於這個問題)。因爲它不會自動調整ListView的大小,所以我不認爲這個解決方案會起作用。如果你有一個額外的寬列,你會在滾動窗格內獲得ListView的水平滾動條。如果向代碼添加很多行,則會看到它們被截斷,無法看到它們(如果不禁用滾動條的水平滾動條,則會看到兩個垂直滾動條)。 – mentics