【问题标题】:JavaFX ScrollBar Scene BuilderJavaFX ScrollBar 场景生成器
【发布时间】:2015-06-10 05:06:30
【问题描述】:

所以基本上我正在尝试从 Scene Builder 将 ScrollBar 添加到我的 JavaFX 应用程序中,但是由于我刚刚开始学习 JavaFX,所以我真的不知道该怎么做。例如,我正在使用 StackPane,并且我有某种无法以预定义窗口大小包装的表单,因此我需要 ScrollBar,以便用户可以滚动浏览表单。我参考了Oracle提供的这段代码:http://docs.oracle.com/javafx/2/ui_controls/ScrollBarSample.java.html
但这无济于事。我不知道这是否是因为 StackPane,因为当我在 HBox 中运行这段代码 sn-p(正如他们给它的那样)时,它工作得很好。 所以这就是我所做的:

scrollBar.setLayoutX(700.0d);
scrollBar.setMin(0);
scrollBar.setOrientation(Orientation.VERTICAL);
scrollBar.setPrefHeight(600);
scrollBar.setMax(1000);

    scrollBar.valueProperty().addListener(new ChangeListener<Number>() {
        @Override
        public void changed(ObservableValue<? extends Number> ov,
            Number old_val, Number new_val) {
                pane.setLayoutY(-new_val.doubleValue());
        }
    });

scrollBar - 场景生成器中 ScrollBar 组件的 fx:id
窗格 - 场景生成器中 StackPanel 组件的 fx:id

所以基本上所有这些代码的行为都是默认的,没有任何变化。如有任何帮助,我将不胜感激。

【问题讨论】:

    标签: javafx


    【解决方案1】:

    也许您可以使用滚动窗格?我为你创建了一个小窗体,它对于它的窗口来说太小了。如您所见,表单将在其 scrollPane 内滚动。

    第一类:

      import javafx.application.Application;
      import javafx.scene.Scene;
      import javafx.stage.Stage;
    
      public class RunTest extends Application {
      public static void main(String[] args) {
         launch(args);
      }
    
      @Override
      public void start(Stage primaryStage) {
         primaryStage.setTitle("Test");
         Test test = new Test();
         Scene scene = new Scene(test, 100, 100);
         primaryStage.setScene(scene);
         primaryStage.show();
      }
     }
    

    类2:

     import javafx.event.ActionEvent;
     import javafx.event.EventHandler;
     import javafx.scene.control.*;
     import javafx.scene.layout.*;
    
     public class Test extends StackPane {
    
         ScrollPane scrollPane = new ScrollPane();
         VBox vBox = new VBox();
         TextField aTextField = new TextField();
         Label aLabel = new Label("a Field");
         TextField aTextField2 = new TextField();
         Label aLabel2 = new Label("a Field2");
         TextField aTextField3 = new TextField();
         Label aLabel3 = new Label("a Field3");
         Button button = new Button("Press");
    
         public Test() {
             setMaxSize(100, 50);
             vBox.setMaxSize(95, 45);
             vBox.getChildren().setAll(aLabel, aTextField, aLabel2, aTextField2, aLabel3, aTextField3, button);
             scrollPane.setContent(vBox);
             scrollPane.setPrefSize(95,45);
             getChildren().addAll(scrollPane);
         }
     }
    

    要在没有滚动窗格的情况下查看,请将这 3 行更改为如下所示:

     //        scrollPane.setContent(vBox);
     //        scrollPane.setPrefSize(95,45);
               getChildren().addAll(vBox);
    

    【讨论】:

      猜你喜欢
      • 2017-02-25
      • 1970-01-01
      • 1970-01-01
      • 2015-05-30
      • 1970-01-01
      • 1970-01-01
      • 2016-03-26
      • 2015-07-18
      • 1970-01-01
      相关资源
      最近更新 更多