所以基本上我试图从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
所以基本上所有这些代码都表现为默认值,没有任何变化。我很感激任何帮助。
答案 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);