Listview JavaFX-可平移列表视图
我注意到ListView与ScrollPane在触摸式嵌入式设备上的滚动行为不同。我无法找到使ListView可平移的方法,以便在拖动时使其滚动,在超出边界时使其反弹(请参见示例) 您可以通过设置下面的JVM参数来模拟触摸Listview JavaFX-可平移列表视图,listview,javafx,touch,gluon,Listview,Javafx,Touch,Gluon,我注意到ListView与ScrollPane在触摸式嵌入式设备上的滚动行为不同。我无法找到使ListView可平移的方法,以便在拖动时使其滚动,在超出边界时使其反弹(请参见示例) 您可以通过设置下面的JVM参数来模拟触摸 -Dcom.sun.javafx.isEmbedded=true -Dcom.sun.javafx.touch=true 公共类ScrollTouch扩展应用程序{ @凌驾 public void start(Stage primaryStage)引发异常{ setTit
-Dcom.sun.javafx.isEmbedded=true
-Dcom.sun.javafx.touch=true
公共类ScrollTouch扩展应用程序{
@凌驾
public void start(Stage primaryStage)引发异常{
setTitle(“滚动条VS列表视图”);
//滚动窗格
ScrollPane ScrollPane=新的ScrollPane();
VBox spContent=新的VBox();
对于(inti=0;ihmm..这有点奇怪:virtualFlow(负责滚动的协作者,不涉及滚动窗格)仅当-Djavafx.scene.control.skin.ListViewSkin.pannable=true时,才支持ListViewSkin设置为true的pannable…这听起来像是一个bug,意思是:不要在破坏虚拟化控件全部用途的listView中使用节点作为数据:)@kleopatra好吧,我知道你的意思,但这与问题无关。我只想用一小段代码来演示这个问题。使用一个简单的字符串会更简洁,同样小;)
public class ScrollTouch extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
primaryStage.setTitle("ScrollBar VS ListView");
// ScrollPane
ScrollPane scrollPane = new ScrollPane();
VBox spContent = new VBox();
for(int i=0; i<20; i++)
spContent.getChildren().add(getLabel("Label No." + i));
scrollPane.setPrefWidth(150);
scrollPane.setContent(spContent);
scrollPane.setPannable(true);
// ListView
ListView<Label> listView = new ListView<Label>();
for(int i=0; i<20; i++)
listView.getItems().add(getLabel("Label No." + i));
listView.setFocusTraversable(false);
HBox rootPane = new HBox();
rootPane.getChildren().addAll(scrollPane,listView);
Scene scene = new Scene(rootPane, 400, 300);
primaryStage.setScene(scene);
primaryStage.show();
}
private Label getLabel(String text) {
Label label = new Label(text);
label.setPrefHeight(20);
return label;
}
public static void main(String[] args) {
Application.launch(args);
}
}