2015-04-05 82 views
0

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

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

滚动条 - 外汇:ID在场景生成器
窗格中的滚动条组件 - FX:在场景生成器ID为StackPanel的组件

所以基本上所有的此代码表现为默认值,没有任何更改。我会很感激任何帮助。

回答

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

要查看没有滚动面板,改变这些三线看起来像这样:

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