Как создать приложение javafx 2.0 MDI

Как реализовать что-то вроде внутреннего фрейма в JavaFx 2.0?

Моя попытка такая..

import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;

public class Main extends Application {

    ConnectDb connection;

    public static void main(String[] args) {
        Application.launch(args);
    }

    @Override
    public void start(Stage stage) throws Exception {
        final Stage stage1 = new Stage();
        StackPane pane = new StackPane();
        Button btn = new Button("Click Me");
        btn.setOnAction(new EventHandler<ActionEvent>() {
            @Override
            public void handle(ActionEvent event) {
                connection = new ConnectDb();
                try {
                    connection.start(stage1);
                } catch (Exception e) {
                    e.printStackTrace(); 
                }
                System.out.println("Fire some thing..");
            }
        });
        pane.getChildren().add(btn);
        stage.setScene(new Scene(pane ,200, 300));
        stage.show();
    }
}

ConnectDb.java

import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;

public class ConnectDb extends Application {

    @Override
    public void start(Stage stage) throws Exception {
        StackPane pane = new StackPane();
        Button btn = new Button("Click On Button which is me");
        btn.setOnAction(new EventHandler<ActionEvent>() {
            @Override
            public void handle(ActionEvent event) {
                System.out.println("Something here..");
            }
        });
        pane.getChildren().add(btn);
        stage.setScene(new Scene(pane ,200, 300));
        stage.show();
    }
}

person Arun    schedule 06.06.2012    source источник
comment
Решение: JFXtras — внутренние окна. Подробнее см. stackoverflow.com в этом вопросе.   -  person zella    schedule 25.02.2014


Ответы (1)


  1. Создайте родительский AncorPane.
  2. Добавьте к нему несколько дочерних AnchorPanes. Они будут служить внутренними рамами. Добавьте к ним различный контент.
  3. Сделать дочерние AnchorPanes невидимыми.
  4. Добавьте кнопки, чтобы скрыть, изменить размер или закрыть дочерние AnchorPanes. При необходимости вызовите функцию, чтобы сделать все дочерние AnchorPanes невидимыми, кроме одного.
person Zon    schedule 05.06.2013