2013-07-01 36 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