Listview JavaFX-可平移列表视图

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

我注意到ListView与ScrollPane在触摸式嵌入式设备上的滚动行为不同。我无法找到使ListView可平移的方法,以便在拖动时使其滚动,在超出边界时使其反弹(请参见示例)

您可以通过设置下面的JVM参数来模拟触摸

-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);
  }
}