我目前正在JavaFX中创建联系人列表。联系人组是手风琴的TitledPane,每个TitledPane的内容都是ListView。手风琴包裹在ScollPane中。
每次扩展TitledPane时,我都会调整手风琴的高度,以便在没有scollbar的情况下完全显示ListView(如下面的代码所示)。滚动条可以出现在手风琴上。
groupAccordion.expandedPaneProperty().addListener(new ChangeListener<TitledPane>() {
@Override public void changed(ObservableValue<? extends TitledPane> property, final TitledPane oldPane, final TitledPane newPane) {
if (newPane != null) {
groupAccordion.setMinHeight(listViewFullSize);
groupAccordion.setMaxHeight(listViewFullSize);
}
}
});
这是FXML:
<ScrollPane fx:id="scrollPane" prefHeight="-1.0" prefWidth="-1.0"
xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/2.2"
fx:controller="GroupsController">
<content>
<Accordion fx:id="groupAccordion" expandedPane="$null" minWidth="-1" prefHeight="-1.0" prefWidth="-1.0" style="" />
</content>
<stylesheets>
<URL value="@../resources/groups/GroupsScreen.css" />
</stylesheets>
</ScrollPane>
我的问题是当鼠标光标在ListView上时(如屏幕截图所示),滚动对手风琴scoll bar(场景的唯一滚动条)没有影响。当光标在手风琴上时,滚动按预期工作。
我尝试设置ListView的滚动侦听器,但它甚至没有被调用,因为没有滚动条。
如何让滚动在父节点上运行?
谢谢