首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JAVAFX HBox未显示

JAVAFX HBox未显示
EN

Stack Overflow用户
提问于 2022-01-12 23:55:40
回答 1查看 211关注 0票数 1

我想做的是:

创建一个基本导航HBox导航(在代码中也称为HBox导航),然后使用HBox导航为每个场景/页面制作专门的导航系统(类似于主类,然后是子类,不使用类)。

问题:

HBox根本没有显示出来。它最初是工作的,当我单独为每个页面制作一个独特的导航HBox时,但是当我试图为每个页面定制一个主导航系统时,它就停止显示了。

代码语言:javascript
复制
//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;
代码语言:javascript
复制
//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();
    }
}
EN

回答 1

Stack Overflow用户

发布于 2022-01-13 00:50:46

我在想这些对象,好像它们是原始的类型。所以: int猴子= 5;int牛=猴子;

cow++;这不影响猴子

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

代码语言:javascript
复制
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);
    }

}

该类别的实施情况:

代码语言:javascript
复制
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);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70689889

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档