JAVAFX HBox not showing



我要做的是:
制作一个基本导航HBox导航(在代码中也称为HBox导航(,然后使用该HBox导航为每个场景/页面制作专门的导航系统(有点像主类,然后是子类,不使用类(。

问题:
HBox根本没有显示。它最初是有效的,当我为每个页面单独制作一个独特的导航HBox时,但当我尝试制作一个为每个页面定制的主导航系统时,它停止了显示。

//imports:
package com.example.phonecustomiser;
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.HBox;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
import java.io.IOException;
//actual code:
public class HelloApplication extends Application {
@Override
public void start(Stage stage) throws IOException {
//universal buttons
Button playButton = new Button("PLAY");
playButton.setPrefWidth(100);
Button menuButton = new Button("MENU PAGE");
menuButton.setPrefWidth(100);
Button startButton = new Button( "START PAGE");
menuButton.setPrefWidth(100);

//universal navigation
HBox nav = new HBox();                        // <------ HBOX NAV
nav.setMaxHeight(100);
nav.setStyle("-fx-background-color: white");
nav.setPadding(new Insets(40, 40, 40, 40));
nav.setSpacing(10);
nav.getChildren().addAll(playButton, menuButton);

//startPage
StackPane startCanvas = new StackPane();
HBox startNav = nav;                               // <--- SPECIALISED NAV
startNav.setStyle("-fx-background-color: red");
startCanvas.getChildren().addAll(startNav);        // <--- NOT SHOWING
//menuPage
StackPane menuCanvas = new StackPane();
HBox menuNav = nav;
menuNav.setStyle("-fx-background-color: green");
menuCanvas.setAlignment(menuNav, Pos.BOTTOM_CENTER);
menuCanvas.getChildren().addAll(menuNav);


//scenes
Scene startScene = new Scene(startCanvas, 600, 600);
Scene menuScene = new Scene(menuCanvas, 600, 600);
//button functions
menuButton.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent actionEvent) {
stage.setScene(menuScene);
}
});

stage.setScene(startScene);
stage.show();
}
public static void main(String[] args) {
launch();
}
}

我认为这些对象是原始类型。因此:int monkey=5;int cow=猴子;

奶牛++;这不会影响猴子

但是对象不是这样工作的。一个变通的解决方案是(我至少找到了(,创建一个全新的类,并将我的导航系统放入其中,然后为每个场景/页面调用该类的新实例。我上的课:

package com.example.phonecustomiser;
import javafx.geometry.Insets;
import javafx.scene.control.Button;
import javafx.scene.layout.HBox;
public class Menu {
Button playButton = new Button("PLAY");
Button menuButton = new Button("MENU PAGE");
Button startButton = new Button( "START PAGE");
HBox nav = new HBox();
public void setUp(){
playButton.setPrefWidth(100);
menuButton.setPrefWidth(100);
menuButton.setPrefWidth(100);
nav.setMaxHeight(100);
nav.setStyle("-fx-background-color: green");
nav.setPadding(new Insets(40, 40, 40, 40));
nav.setSpacing(10);
nav.getChildren().addAll(playButton, menuButton);
}
}

该类的实现:

StackPane startCanvas = new StackPane();
Menu startNav = new Menu();
startNav.setUp();
startNav.nav.setStyle("-fx-background-color: red");
startCanvas.getChildren().addAll(startNav.nav);
startCanvas.setAlignment(startNav.nav, Pos.BOTTOM_CENTER);

最新更新