JavaFX ScrollBar场景生成器

时间:2015-04-05 18:01:54

标签: javafx

所以基本上我试图从Scene Builder中将ScrollBar添加到我的JavaFX应用程序中,但是因为我刚刚开始学习JavaFX,所以我真的不知道该怎么做。例如,我使用StackPane,我有某种形式,我不能包装在预定义的窗口大小,所以我需要ScrollBar所以用户可以滚动窗体。我引用了Oracle提供的代码:http://docs.oracle.com/javafx/2/ui_controls/ScrollBarSample.java.html
但它没有任何帮助。我不知道这是不是因为StackPane,因为当我在HBox中运行这段代码片段时(正如他们给的那样)它运行得很好。 所以这就是我所做的:

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 - fx:用于Scene Builder中ScrollBar组件的id pane - 场景生成器中的StackPanel组件的fx:id

所以基本上所有这些代码都表现为默认值,没有任何变化。我很感激任何帮助。

1 个答案:

答案 0 :(得分:1)

也许你可以使用scrollPane?我给你创造了一个小窗体,它的窗户太小了。正如您希望看到的那样,表单将在其scrollPane中滚动。

Class1:

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