0

下の図のように、ボタンをクリックして、TabPane 内に 1 つ以上のステージを表示する必要があります。

ここに画像の説明を入力

私の目標は、Swing の JInternalFrame に似た状況にすることです:これを達成するにはどうすればよいですか? ステージを子としてタブ ペインに追加できません。

これが不可能な場合、他の解決策は何ですか? ステージに SplitPanes を配置したいと思います。

ありがとう

PS Win7、NetBeans 7.4 Beta (Build 201307092200)、SceneBuilder 1.1 を使用しています。

編集: VFXWindows css の変更後の外観は次のとおりです。

ここに画像の説明を入力

注意すべき点が 1 つあります。ノードを追加する必要がありました (私の場合は、prefSize(0,0) の HBox です。そうしないと、プロットされた最初のウィンドウを移動またはサイズ変更できません。最初のウィンドウのみです。

最後に、Windows を全画面表示 (最大化) する方法が見つかりません。

4

1 に答える 1

3

ここでは、jfxtrasのウィンドウの例をタブ内に置きます。を変更するだけです。

import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.Tab;
import javafx.scene.control.TabPane;
import javafx.stage.Stage;
import jfxtras.labs.scene.control.window.CloseIcon;
import jfxtras.labs.scene.control.window.MinimizeIcon;
import jfxtras.labs.scene.control.window.Window;


public class WindowInTab extends Application {
private static int counter = 1;

private void init(Stage primaryStage) {
    TabPane tabPane = new TabPane();
    Tab tab = generateTab("Windows...");        
    Tab anotherTab = generateTab("More Windows");
    tabPane.getTabs().addAll(tab, anotherTab);      
    primaryStage.setResizable(true);
    primaryStage.setScene(new Scene(tabPane, 600, 500));        
}

private Tab generateTab(String tabName) {
    Tab tab = new Tab(tabName);
    final Group root = new Group();
    tab.setContent(root);
    Button button = new Button("Add more windows");     

    root.getChildren().addAll(button);      

    button.setOnAction(new EventHandler<ActionEvent>() {            
        @Override
        public void handle(ActionEvent arg0) {
            // create a window with title "My Window"
            Window w = new Window("My Window#"+counter);
            // set the window position to 10,10 (coordinates inside canvas)
            w.setLayoutX(10);
            w.setLayoutY(10);
            // define the initial window size
            w.setPrefSize(300, 200);
            // either to the left
            w.getLeftIcons().add(new CloseIcon(w));
            // .. or to the right
            w.getRightIcons().add(new MinimizeIcon(w));
            // add some content
            w.getContentPane().getChildren().add(new Label("Content... \nof the window#"+counter++));
            // add the window to the canvas
            root.getChildren().add(w);  
        }
    });
    return tab;
}

public double getSampleWidth() {return 600;}
public double getSampleHeight() {return 500;}

@Override
public void start(Stage primaryStage) throws Exception {
    init(primaryStage);
    primaryStage.show();
}
public static void main(String[] args) {launch(args);}

}

タブ内の内部ウィンドウ

これがまさにあなたが探していたものかどうかはわかりません。それが役に立てば幸い!

于 2013-07-24T14:15:23.783 に答える