Как создать полосу прокрутки на f xml с помощью контроллера - PullRequest
2 голосов
/ 28 апреля 2020

Я хотел бы создать панель прокрутки и кнопку из контроллера и отобразить ее в f xml, это возможно? Это мой код, но он не работает

контроллер

package application;

import javafx.scene.control.Button;
import javafx.scene.control.ScrollPane;
import javafx.scene.control.ScrollPane.ScrollBarPolicy;


public class controller {

     ScrollPane scrollPane = new ScrollPane();
     Button button = new Button("My Button");


    public void initialize() {
        button.setPrefSize(400, 300);
        scrollPane.setContent(button);
        scrollPane.setVbarPolicy(ScrollBarPolicy.AS_NEEDED);
        scrollPane.setHbarPolicy(ScrollBarPolicy.AS_NEEDED);
    }
}

main

package application;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;

public class Main extends Application {
    @Override
    public void start(Stage primaryStage) throws Exception {
        final Parent parent = FXMLLoader.load(getClass().getResource("ui.fxml"));
        primaryStage.setTitle("ScrollPane Demo ");
        primaryStage.setScene(new Scene(parent,600, 600));
        primaryStage.show();
     }
public static void main(String[] args) {
        launch(args);}
    }

f xml

<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.layout.Pane?>
<?import javafx.scene.layout.VBox?>
<VBox id="vbox" prefHeight="400" prefWidth="400.0" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="application.controller">
   <children>
      <Pane prefHeight="200.0" prefWidth="200.0" />
   </children>
</VBox>

1 Ответ

0 голосов
/ 28 апреля 2020

Вам необходимо включить ваш vbox в контроллер, например:

@FXML
private VBox vbox;

После этого добавьте свою полосу прокрутки для дочерних элементов вашего vbox:

vbox.getChildren().add(scrollPane);

Обратите внимание, что вы не добавили вашу кнопку к содержимому вашей панели прокрутки, чтобы ваша панель прокрутки в настоящее время пуста!

Редактировать: почему вы хотите добавить узлы через f xml и из кода тоже? Используйте это решение, если это действительно необходимо, в любом случае используйте f xml для создания вашего пользовательского интерфейса.

...