如何解决需要在舞台上改变场景的 VBox 按钮,而舞台变量在另一个方法中
这是我目前编写的代码。除了解决我的问题之外,我也很乐意接受任何关于它的批评(请记住我是新手)。第一的。我有一个舞台,我已经按照我想要的方式配置了场景,包括按钮、图像等等。 GUI 控件左侧 VBox 中的 3 个按钮,GridPane 出现在 borderpane 的中心部分。每个 GridPane 中有 5 个按钮(以及我不担心的其他装饰性东西)这 5 个按钮,在每个 3 GridPanes 上,我想打开另一个全屏窗口,或者将舞台上的当前场景更改为不同的场景(但一旦该窗口关闭,它就必须恢复到原始场景)。我如何让这些按钮打开另一个阶段?还是改变原来舞台上的场景?或者我应该让它打开一个全屏 AnchorPane 并将主舞台设置为 false?当用户单击 15 个按钮中的一个(每个屏幕 5 个)时,我希望 15 个按钮中的每一个都有不同的屏幕,因为这些屏幕中的每一个都有不同的功能。这样做的最佳方法是什么?此外,当新的舞台/屏幕/面板启动时,我需要它是用户可以访问的唯一屏幕,直到他们关闭它或返回到第一个主屏幕。这是代码。
'''
package scinfobase;
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.geometry.*;
import javafx.scene.Scene;
import javafx.scene.control.*;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.*;
import javafx.scene.media.Media;
import javafx.scene.media.MediaView;
import javafx.scene.paint.Color;
import javafx.scene.text.Font;
import javafx.scene.text.TextAlignment;
import javafx.stage.Stage;
import javafx.stage.StageStyle;
public class MainStarUI extends Application {
public Scene primaryScene,shipScene,TradeScene,starSystemScene;
private borderpane mainborderpane = new borderpane();
private borderpane mainborderpaneShip = new borderpane();
private AnchorPane leftAnchorPane = new AnchorPane();
private AnchorPane centeranchorPane = new AnchorPane();
private VBox leftVBox = new VBox();
private Button leftButtonOne = new Button();
private Button leftButtonTwo = new Button();
private Button leftButtonThree = new Button();
private GridPane mainCenterGridZero = addGridPanestart();
private GridPane mainCenterGridOne = addGridPaneOne();
private GridPane mainCenterGridTwo = addGridPaneTwo();
private GridPane mainCenterGridThree = addGridPaneThree();
private TabPane mainTabPane = new TabPane();
//Buttons for GridPanes
private Button shipOne = new Button();
private Button shipTwo = new Button();
private Button shipThree = new Button();
private Button shipFour = new Button();
private Button shipFive = new Button();
@Override
public void start(Stage primaryStage) {
//Main Stage/Scene Components
MenuBar mainMenuOne = addMenuBar();
AnchorPane leftSideAnchor = leftAnchorPane;
AnchorPane leftSideAnchorShip = leftAnchorPane;
AnchorPane leftSideAnchorTrade= leftAnchorPane;
AnchorPane leftSideAnchorSystem = leftAnchorPane;
GridPane mainGridStart = mainCenterGridZero;
GridPane mainGridOne = mainCenterGridOne;
GridPane mainGridTwo = mainCenterGridTwo;
GridPane mainGridThree = mainCenterGridThree;
Button firstButton = leftButtonOne;
Button secondButton = leftButtonTwo;
Button thirdButton = leftButtonThree;
leftVBox.setPrefWidth(300);
leftVBox.setMaxWidth(300);
leftVBox.setPadding(new Insets(15));
leftVBox.setSpacing(20);
leftVBox.setStyle("-fx-background-color: #336699;");
borderpane mainPane = mainborderpane;
mainPane.setTop(mainMenuOne);
mainPane.setLeft(leftSideAnchor);
mainPane.setCenter(mainGridStart);
borderpane mainPaneship = mainborderpaneShip;
mainPaneship.setTop(mainMenuOne);
//mainPaneship.setLeft(leftSideAnchorShip);
mainPaneship.setCenter(mainTabPane);
firstButton.setText("Ships,Components,Items & Weaponry");
firstButton.setMinSize(270,270);
firstButton.setMaxSize(270,300);
firstButton.prefheightproperty().bind(leftVBox.heightproperty());
firstButton.setonAction((ActionEvent a) -> mainPane.setCenter(mainGridOne));
secondButton.setText("Trading,Mining,Refining & Commodities");
secondButton.setMinSize(270,270);
secondButton.setMaxSize(270,300);
secondButton.prefheightproperty().bind(leftVBox.heightproperty());
secondButton.setonAction((ActionEvent clickOne) -> mainPane.setCenter(mainGridTwo));
thirdButton.setText("Star Systems,Planets,Moons & Locations");
thirdButton.setMinSize(270,270);
thirdButton.setMaxSize(270,300);
thirdButton.prefheightproperty().bind(leftVBox.heightproperty());
thirdButton.setonAction((ActionEvent clickTwo) -> mainPane.setCenter(mainGridThree));
leftVBox.getChildren().addAll(firstButton,secondButton,thirdButton);
leftAnchorPane.setPrefWidth(300);
leftAnchorPane.setMaxWidth(330);
leftAnchorPane.getChildren().addAll(leftVBox);
AnchorPane.setBottomAnchor(leftVBox,0.0);
AnchorPane.setTopAnchor(leftVBox,0.0);
AnchorPane.setLeftAnchor(leftVBox,0.0);
AnchorPane.setRightAnchor(leftVBox,0.0);
/*
Button shipB1 = new Button();
shipB1.setPrefSize(300,300);
shipB1.setonAction((ActionEvent clickTwo) -> leftVBox.setStyle("-fx-background-color: purple"));
Button shipB2 = shipTwo;
shipB2.setPrefSize(300,300);
Button shipB3 = shipThree;
shipB3.setPrefSize(400,300);
Button shipB4 = shipFour;
shipB4.setPrefSize(300,300);
Button shipB5 = shipFive;
shipB5.setPrefSize(300,300);
*/
shipScene = new Scene(mainPaneship);
primaryStage.setTitle("Star Citizen InfoNet & Database");
primaryStage.setMinWidth(1600);
primaryStage.setMinHeight(950);
Scene mainScene = new Scene(mainPane);
changeStage(primaryStage);
primaryStage.setScene(mainScene);
primaryStage.initStyle(StageStyle.DECORATED);
primaryStage.show();
}
//adds MenuBar to the top section of the borderpane
public MenuBar addMenuBar() {
Menu menuOne = new Menu("File");
Menu menuTwo = new Menu("Edit");
Menu menuThree = new Menu("Help");
Menu menuFour = new Menu("Exit");
MenuItem menuItemOne = new MenuItem("Open");
MenuItem menuItemTwo = new MenuItem("Save");
MenuItem menuItemThree = new MenuItem("Exit");
menuOne.getItems().add(menuItemOne);
menuOne.getItems().add(menuItemTwo);
menuFour.getItems().add(menuItemThree);
MenuBar mainMenuOne = new MenuBar();
mainMenuOne.getMenus().add(menuOne);
mainMenuOne.getMenus().add(menuTwo);
mainMenuOne.getMenus().add(menuThree);
mainMenuOne.getMenus().add(menuFour);
mainMenuOne.maxHeight(25);
mainMenuOne.minHeight(25);
return mainMenuOne;
}
//First Grid Pane in Main Page
public GridPane addGridPanestart() {
GridPane mainGridOne = new GridPane();
ColumnConstraints gridColOne = new ColumnConstraints();
ColumnConstraints gridColTwo = new ColumnConstraints();
ColumnConstraints gridColThree = new ColumnConstraints();
ColumnConstraints gridColFour = new ColumnConstraints();
gridColOne.setPercentWidth(25.0);
gridColTwo.setPercentWidth(25.0);
gridColThree.setPercentWidth(25.0);
gridColThree.setPercentWidth(25.0);
gridColOne.setHgrow(Priority.ALWAYS);
gridColTwo.setHgrow(Priority.ALWAYS);
gridColThree.setHgrow(Priority.ALWAYS);
gridColFour.setHgrow(Priority.ALWAYS);
RowConstraints gridRowOne = new RowConstraints();
RowConstraints gridRowTwo = new RowConstraints();
RowConstraints gridRowThree = new RowConstraints();
RowConstraints gridRowFour = new RowConstraints();
RowConstraints gridRowFive = new RowConstraints();
RowConstraints gridRowSix = new RowConstraints();
RowConstraints gridRowSeven = new RowConstraints();
RowConstraints gridRowEight = new RowConstraints();
gridRowOne.setPercentHeight(12.5);
gridRowTwo.setPercentHeight(12.5);
gridRowThree.setPercentHeight(12.5);
gridRowFour.setPercentHeight(12.5);
gridRowFive.setPercentHeight(12.5);
gridRowSix.setPercentHeight(12.5);
gridRowSeven.setPercentHeight(12.5);
gridRowEight.setPercentHeight(12.5);
gridRowOne.setVgrow(Priority.ALWAYS);
gridRowTwo.setVgrow(Priority.ALWAYS);
gridRowThree.setVgrow(Priority.ALWAYS);
gridRowFour.setVgrow(Priority.ALWAYS);
gridRowFive.setVgrow(Priority.ALWAYS);
gridRowSix.setVgrow(Priority.ALWAYS);
gridRowSeven.setVgrow(Priority.ALWAYS);
gridRowEight.setVgrow(Priority.ALWAYS);
mainGridOne.getColumnConstraints().addAll(gridColOne,gridColTwo,gridColThree,gridColFour);
mainGridOne.getRowConstraints().addAll(gridRowOne,gridRowTwo,gridRowThree,gridRowFour,gridRowFive,gridRowSix,gridRowSeven,gridRowEight);
mainGridOne.setStyle("-fx-background-image: url(SCImages/MainGridImages/grid0.jpg)");
Image logoImage = new Image("SCImages/logos/Taktikallogo1.jpg");
ImageView logoImageView = new ImageView();
logoImageView.setimage(logoImage);
logoImageView.setPreserveRatio(false);
logoImageView.setFitWidth(180);
logoImageView.setFitHeight(180);
logoImageView.setSmooth(true);
logoImageView.setCache(true);
Image sclogoImage = new Image("SCImages/logos/SClogoMain.jpg");
ImageView sclogoImageView = new ImageView();
sclogoImageView.setimage(sclogoImage);
sclogoImageView.setPreserveRatio(false);
sclogoImageView.setFitWidth(180);
sclogoImageView.setFitHeight(180);
sclogoImageView.setSmooth(true);
sclogoImageView.setCache(true);
Label topLabel = new Label("STAR CITIZEN INFONET & DATABASE");
topLabel.setFont(new Font("Arial",38));
topLabel.setTextFill(Color.WHITE);
topLabel.setTextAlignment(TextAlignment.CENTER);
topLabel.setWrapText(true);
topLabel.setPrefheight(100);
topLabel.setMaxHeight(160);
mainGridOne.add(logoImageView,0);
mainGridOne.setConstraints(logoImageView,1,2,HPos.LEFT,VPos.TOP);
mainGridOne.add(sclogoImageView,3,0);
mainGridOne.setConstraints(sclogoImageView,HPos.RIGHT,VPos.TOP);
mainGridOne.add(topLabel,1);
mainGridOne.setConstraints(topLabel,HPos.CENTER,VPos.CENTER);
mainGridOne.setHgap(15);
mainGridOne.setVgap(15);
mainGridOne.setPadding(new Insets(10,10,10));
return mainGridOne;
}
//Changes to this GridPane with SHIP Button is pushed
public GridPane addGridPaneOne(){
GridPane mainGridOne = new GridPane();
ColumnConstraints gridColOne = new ColumnConstraints();
ColumnConstraints gridColTwo = new ColumnConstraints();
ColumnConstraints gridColThree = new ColumnConstraints();
ColumnConstraints gridColFour = new ColumnConstraints();
gridColOne.setPercentWidth(25.0);
gridColTwo.setPercentWidth(25.0);
gridColThree.setPercentWidth(25.0);
gridColThree.setPercentWidth(25.0);
gridColOne.setHgrow(Priority.ALWAYS);
gridColTwo.setHgrow(Priority.ALWAYS);
gridColThree.setHgrow(Priority.ALWAYS);
gridColFour.setHgrow(Priority.ALWAYS);
RowConstraints gridRowOne = new RowConstraints();
RowConstraints gridRowTwo = new RowConstraints();
RowConstraints gridRowThree = new RowConstraints();
RowConstraints gridRowFour = new RowConstraints();
RowConstraints gridRowFive = new RowConstraints();
RowConstraints gridRowSix = new RowConstraints();
RowConstraints gridRowSeven = new RowConstraints();
RowConstraints gridRowEight = new RowConstraints();
gridRowOne.setPercentHeight(12.5);
gridRowTwo.setPercentHeight(12.5);
gridRowThree.setPercentHeight(12.5);
gridRowFour.setPercentHeight(12.5);
gridRowFive.setPercentHeight(12.5);
gridRowSix.setPercentHeight(12.5);
gridRowSeven.setPercentHeight(12.5);
gridRowEight.setPercentHeight(12.5);
gridRowOne.setVgrow(Priority.ALWAYS);
gridRowTwo.setVgrow(Priority.ALWAYS);
gridRowThree.setVgrow(Priority.ALWAYS);
gridRowFour.setVgrow(Priority.ALWAYS);
gridRowFive.setVgrow(Priority.ALWAYS);
gridRowSix.setVgrow(Priority.ALWAYS);
gridRowSeven.setVgrow(Priority.ALWAYS);
gridRowEight.setVgrow(Priority.ALWAYS);
mainGridOne.getColumnConstraints().addAll(gridColOne,gridRowEight);
mainGridOne.setStyle("-fx-background-image: url(SCImages/MainGridImages/grid1.jpg)");
Image logoImage = new Image("SCImages/logos/Taktikallogo1.jpg");
ImageView logoImageView = new ImageView();
logoImageView.setimage(logoImage);
logoImageView.setPreserveRatio(false);
logoImageView.setFitWidth(180);
logoImageView.setFitHeight(180);
logoImageView.setSmooth(true);
logoImageView.setCache(true);
Image sclogoImage = new Image("SCImages/logos/SClogoMain.jpg");
ImageView sclogoImageView = new ImageView();
sclogoImageView.setimage(sclogoImage);
sclogoImageView.setPreserveRatio(false);
sclogoImageView.setFitWidth(180);
sclogoImageView.setFitHeight(180);
sclogoImageView.setSmooth(true);
sclogoImageView.setCache(true);
Label topLabel = new Label("SHIPS,VEHICLES & ROVERS");
topLabel.setFont(new Font("Arial",38));
topLabel.setTextFill(Color.WHITE);
topLabel.setTextAlignment(TextAlignment.CENTER);
topLabel.setWrapText(true);
topLabel.setPrefheight(100);
topLabel.setMaxHeight(160);
Button b1 = new Button("Button #1");
b1.setPrefSize(300,300);
//b1.setonAction((ActionEvent clickTwo) -> changeStage);
Button b2 = new Button("Button #2");
b2.setPrefSize(300,300);
Button b3 = new Button("Button #3");
b3.setPrefSize(400,300);
Button b4 = new Button("Button #4");
b4.setPrefSize(300,300);
Button b5 = new Button("Button #5");
b5.setPrefSize(300,300);
mainGridOne.add(logoImageView,VPos.CENTER);
mainGridOne.add(b1,2);
mainGridOne.setConstraints(b1,VPos.CENTER);
mainGridOne.add(b2,5);
mainGridOne.setConstraints(b2,5,VPos.CENTER);
mainGridOne.add(b3,5);
mainGridOne.setConstraints(b3,VPos.CENTER);
mainGridOne.add(b4,5);
mainGridOne.setConstraints(b4,VPos.CENTER);
mainGridOne.add(b5,2);
mainGridOne.setConstraints(b5,10));
return mainGridOne;
}
//Changes to this GridPane when Trading Button is pushed
public GridPane addGridPaneTwo(){
GridPane mainGridOne = new GridPane();
ColumnConstraints gridColOne = new ColumnConstraints();
ColumnConstraints gridColTwo = new ColumnConstraints();
ColumnConstraints gridColThree = new ColumnConstraints();
ColumnConstraints gridColFour = new ColumnConstraints();
gridColOne.setPercentWidth(25.0);
gridColTwo.setPercentWidth(25.0);
gridColThree.setPercentWidth(25.0);
gridColThree.setPercentWidth(25.0);
gridColOne.setHgrow(Priority.ALWAYS);
gridColTwo.setHgrow(Priority.ALWAYS);
gridColThree.setHgrow(Priority.ALWAYS);
gridColFour.setHgrow(Priority.ALWAYS);
RowConstraints gridRowOne = new RowConstraints();
RowConstraints gridRowTwo = new RowConstraints();
RowConstraints gridRowThree = new RowConstraints();
RowConstraints gridRowFour = new RowConstraints();
RowConstraints gridRowFive = new RowConstraints();
RowConstraints gridRowSix = new RowConstraints();
RowConstraints gridRowSeven = new RowConstraints();
RowConstraints gridRowEight = new RowConstraints();
gridRowOne.setPercentHeight(12.5);
gridRowTwo.setPercentHeight(12.5);
gridRowThree.setPercentHeight(12.5);
gridRowFour.setPercentHeight(12.5);
gridRowFive.setPercentHeight(12.5);
gridRowSix.setPercentHeight(12.5);
gridRowSeven.setPercentHeight(12.5);
gridRowEight.setPercentHeight(12.5);
gridRowOne.setVgrow(Priority.ALWAYS);
gridRowTwo.setVgrow(Priority.ALWAYS);
gridRowThree.setVgrow(Priority.ALWAYS);
gridRowFour.setVgrow(Priority.ALWAYS);
gridRowFive.setVgrow(Priority.ALWAYS);
gridRowSix.setVgrow(Priority.ALWAYS);
gridRowSeven.setVgrow(Priority.ALWAYS);
gridRowEight.setVgrow(Priority.ALWAYS);
mainGridOne.getColumnConstraints().addAll(gridColOne,gridRowEight);
mainGridOne.setStyle("-fx-background-image: url(SCImages/MainGridImages/grid3.jpg)");
Image logoImage = new Image("SCImages/logos/Taktikallogo1.jpg");
ImageView logoImageView = new ImageView();
logoImageView.setimage(logoImage);
logoImageView.setPreserveRatio(false);
logoImageView.setFitWidth(180);
logoImageView.setFitHeight(180);
logoImageView.setSmooth(true);
logoImageView.setCache(true);
Image sclogoImage = new Image("SCImages/logos/SClogoMain.jpg");
ImageView sclogoImageView = new ImageView();
sclogoImageView.setimage(sclogoImage);
sclogoImageView.setPreserveRatio(false);
sclogoImageView.setFitWidth(180);
sclogoImageView.setFitHeight(180);
sclogoImageView.setSmooth(true);
sclogoImageView.setCache(true);
Label topLabel = new Label("COMMODITIES,TradING,REFINING & MINING");
topLabel.setFont(new Font("Arial",300);
Button b2 = new Button("Button #2");
b2.setPrefSize(300,10));
return mainGridOne;
}
//Changes to this GridPane when Star Systems Button is pushed
public GridPane addGridPaneThree(){
GridPane mainGridOne = new GridPane();
ColumnConstraints gridColOne = new ColumnConstraints();
ColumnConstraints gridColTwo = new ColumnConstraints();
ColumnConstraints gridColThree = new ColumnConstraints();
ColumnConstraints gridColFour = new ColumnConstraints();
gridColOne.setPercentWidth(25.0);
gridColTwo.setPercentWidth(25.0);
gridColThree.setPercentWidth(25.0);
gridColThree.setPercentWidth(25.0);
gridColOne.setHgrow(Priority.ALWAYS);
gridColTwo.setHgrow(Priority.ALWAYS);
gridColThree.setHgrow(Priority.ALWAYS);
gridColFour.setHgrow(Priority.ALWAYS);
RowConstraints gridRowOne = new RowConstraints();
RowConstraints gridRowTwo = new RowConstraints();
RowConstraints gridRowThree = new RowConstraints();
RowConstraints gridRowFour = new RowConstraints();
RowConstraints gridRowFive = new RowConstraints();
RowConstraints gridRowSix = new RowConstraints();
RowConstraints gridRowSeven = new RowConstraints();
RowConstraints gridRowEight = new RowConstraints();
gridRowOne.setPercentHeight(12.5);
gridRowTwo.setPercentHeight(12.5);
gridRowThree.setPercentHeight(12.5);
gridRowFour.setPercentHeight(12.5);
gridRowFive.setPercentHeight(12.5);
gridRowSix.setPercentHeight(12.5);
gridRowSeven.setPercentHeight(12.5);
gridRowEight.setPercentHeight(12.5);
gridRowOne.setVgrow(Priority.ALWAYS);
gridRowTwo.setVgrow(Priority.ALWAYS);
gridRowThree.setVgrow(Priority.ALWAYS);
gridRowFour.setVgrow(Priority.ALWAYS);
gridRowFive.setVgrow(Priority.ALWAYS);
gridRowSix.setVgrow(Priority.ALWAYS);
gridRowSeven.setVgrow(Priority.ALWAYS);
gridRowEight.setVgrow(Priority.ALWAYS);
mainGridOne.getColumnConstraints().addAll(gridColOne,gridRowEight);
mainGridOne.setStyle("-fx-background-image: url(SCImages/MainGridImages/grid5.jpg)");
Image logoImage = new Image("SCImages/logos/Taktikallogo1.jpg");
ImageView logoImageView = new ImageView();
logoImageView.setimage(logoImage);
logoImageView.setPreserveRatio(false);
logoImageView.setFitWidth(180);
logoImageView.setFitHeight(180);
logoImageView.setSmooth(true);
logoImageView.setCache(true);
Image sclogoImage = new Image("SCImages/logos/SClogoMain.jpg");
ImageView sclogoImageView = new ImageView();
sclogoImageView.setimage(sclogoImage);
sclogoImageView.setPreserveRatio(false);
sclogoImageView.setFitWidth(180);
sclogoImageView.setFitHeight(180);
sclogoImageView.setSmooth(true);
sclogoImageView.setCache(true);
Label topLabel = new Label("STAR SYstemS & LOCATIONS");
topLabel.setFont(new Font("Arial",38));
topLabel.setTextFill(Color.WHITE);
topLabel.setWrapText(true);
topLabel.setTextAlignment(TextAlignment.CENTER);
topLabel.setPrefheight(100);
topLabel.setMaxHeight(160);
Button b1 = new Button("Button #1");
b1.setPrefSize(300,VPos.CENTER);
mainGridOne.setHgap(15);
mainGridOne.setVgap(15);
mainGridOne.setPadding(new Insets(10,10));
return mainGridOne;
}
public void changeStage(Stage primaryStage){
primaryStage.setScene(shipScene);
}
public static void main(String[] args){
launch(args);
}
}
'''
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。