簡體   English   中英

按鈕未出現在GridPane JavaFX8中

[英]Buttons not appearing in GridPane JavaFX8

我在GridPane中使用按鈕之前先聲明它們,以便可以使用button.setOnAction()函數切換場景,但按鈕不會出現。

當我在gridpane.add()函數內部創建按鈕時,它就可以正常工作。 我試過使用BorderPanes代替,並做EventHandler的非lambda版本。

import javafx.application.Application;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.GridPane;
import javafx.stage.Stage;

public class Main extends Application {

    public static Scene scene1;
    public static Scene scene2;
    public static Scene scene3;
    public static Scene[] scenes = new Scene[]{null, scene1, scene2, scene3};

    @Override
    public void start(Stage primaryStage) {
        primaryStage.setTitle("Scene Switcher");

        GridPane gp1 = new GridPane();
        GridPane gp2 = new GridPane();
        GridPane gp3 = new GridPane();

        Button button1 = new Button("scene 1");
        button1.setOnAction(event -> primaryStage.setScene(scene1));
        Button button2 = new Button("scene 2");
        button2.setOnAction(event -> primaryStage.setScene(scene2));
        Button button3 = new Button("scene 3");
        button3.setOnAction(event -> primaryStage.setScene(scene3));

        //
        // SCENE 1
        //
        Label l1 = new Label("this is scene 1");
        BorderPane.setAlignment(l1, Pos.CENTER);
        gp1.add(l1, 0, 0);
        gp1.add(button2, 0, 2);
        gp1.add(button3, 0, 3);
        scene1 = new Scene(gp1, 500, 500);

        //
        // SCENE 2
        //
        Label l2 = new Label("this is scene 2");
        BorderPane.setAlignment(l2, Pos.CENTER);
        gp2.add(l2, 0, 0);
        gp2.add(button1, 0, 2);
        gp2.add(button3, 0, 3);
        scene2 = new Scene(gp2, 500, 500);

        //
        // SCENE 3
        //
        Label l3 = new Label("this is scene 3");
        BorderPane.setAlignment(l3, Pos.CENTER);
        gp3.add(l3, 0, 0);
        gp3.add(button1, 0, 2);
        gp3.add(button2, 0, 3);
        scene3 = new Scene(gp3, 500, 500);

        primaryStage.setScene(scene1);
        primaryStage.show();
    }
}

這些按鈕根本不顯示。

您的Button節點一次只能屬於一個GridPane 在這里,你將它們添加到gp2gp3它們添加到后gp1

您將需要重新考慮此Stage的設計,因為嘗試這種方式是不可能的。

您可以通過注釋掉場景2和3的所有代碼來確認這一點。按鈕將按原樣出現。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM