Java 如何从组合框中获取所选字符串? 公共静态字符串stringWallColor; 公共静态void main(字符串[]args){ 发射(args); System.out.println(“完成!”); } public void start(Stage primaryStage)引发异常{ Main.primaryStage=primaryStage; 菜单栏菜单=新建菜单栏(); MenuGenerator.menuCreator(菜单); 按钮播放按钮=新按钮(“玩游戏”); ComboBox wallColorCombo=新ComboBox(); setPrompText(“选择墙颜色”); wallColorCombo.getItems().addAll( “默认-黑色”, “深绿色”, “深红色”, “深灰色”, “马鞍棕”, “午夜蓝”, “深品红”, “深红色”, “海军”); stringWallColor=wallColorCombo.getSelectionModel().getSelectedItem(); gameGrid=新建GridPane(); GridPane root=新的GridPane(); 添加(菜单,0,0); 添加(gameGrid,0,1); 游戏场景=新场景(根,600625); GridPane startGrid=新建GridPane(); startGrid.setHgap(20); startGrid.setVgap(20); 播放按钮。设置行间距(10); 添加(播放按钮,8,12); startGrid.add(wallColorCombo,7,12); GridPane root0=新建GridPane(); root0.add(startGrid,0,1); Scene startScene=新场景(root040400); 初生阶段:西新统(始新统); primaryStage.setTitle(GameEngine.GAME_NAME); primaryStage.show(); System.out.println(“尚未加载默认保存文件”); 播放按钮。设置操作(e->{ MenuGenerator.loadDefaultSaveFile(primaryStage); System.out.println(“加载的默认保存文件”); primaryStage.setScene(游戏场景);}); } 公共静态颜色getWallColor(){ Color wallColor=Color.BLACK; if(stringWallColor.equals(“默认-黑色”)) wallColor=Color.BLACK; if(stringWallColor.equals(“深绿色”)) wallColor=Color.DARKGREEN; if(stringWallColor.equals(“暗红色”)) wallColor=Color.DARKRED; if(stringWallColor.equals(“深灰色”)) wallColor=Color.DARKGRAY; if(stringWallColor.equals(“鞍棕色”)) wallColor=Color.SADDLEBROWN; if(stringWallColor.equals(“午夜蓝”)) wallColor=Color.MIDNIGHTBLUE; if(stringWallColor.equals(“深品红”)) wallColor=Color.DARKMAGENTA; if(stringWallColor.equals(“深红色”)) wallColor=Color.CRIMSON; if(stringWallColor.equals(“海军”)) wallColor=Color.NAVY; 返回墙颜色; }

Java 如何从组合框中获取所选字符串? 公共静态字符串stringWallColor; 公共静态void main(字符串[]args){ 发射(args); System.out.println(“完成!”); } public void start(Stage primaryStage)引发异常{ Main.primaryStage=primaryStage; 菜单栏菜单=新建菜单栏(); MenuGenerator.menuCreator(菜单); 按钮播放按钮=新按钮(“玩游戏”); ComboBox wallColorCombo=新ComboBox(); setPrompText(“选择墙颜色”); wallColorCombo.getItems().addAll( “默认-黑色”, “深绿色”, “深红色”, “深灰色”, “马鞍棕”, “午夜蓝”, “深品红”, “深红色”, “海军”); stringWallColor=wallColorCombo.getSelectionModel().getSelectedItem(); gameGrid=新建GridPane(); GridPane root=新的GridPane(); 添加(菜单,0,0); 添加(gameGrid,0,1); 游戏场景=新场景(根,600625); GridPane startGrid=新建GridPane(); startGrid.setHgap(20); startGrid.setVgap(20); 播放按钮。设置行间距(10); 添加(播放按钮,8,12); startGrid.add(wallColorCombo,7,12); GridPane root0=新建GridPane(); root0.add(startGrid,0,1); Scene startScene=新场景(root040400); 初生阶段:西新统(始新统); primaryStage.setTitle(GameEngine.GAME_NAME); primaryStage.show(); System.out.println(“尚未加载默认保存文件”); 播放按钮。设置操作(e->{ MenuGenerator.loadDefaultSaveFile(primaryStage); System.out.println(“加载的默认保存文件”); primaryStage.setScene(游戏场景);}); } 公共静态颜色getWallColor(){ Color wallColor=Color.BLACK; if(stringWallColor.equals(“默认-黑色”)) wallColor=Color.BLACK; if(stringWallColor.equals(“深绿色”)) wallColor=Color.DARKGREEN; if(stringWallColor.equals(“暗红色”)) wallColor=Color.DARKRED; if(stringWallColor.equals(“深灰色”)) wallColor=Color.DARKGRAY; if(stringWallColor.equals(“鞍棕色”)) wallColor=Color.SADDLEBROWN; if(stringWallColor.equals(“午夜蓝”)) wallColor=Color.MIDNIGHTBLUE; if(stringWallColor.equals(“深品红”)) wallColor=Color.DARKMAGENTA; if(stringWallColor.equals(“深红色”)) wallColor=Color.CRIMSON; if(stringWallColor.equals(“海军”)) wallColor=Color.NAVY; 返回墙颜色; },java,javafx,Java,Javafx,} 这是我的主课。我正在尝试从组合框中选择字符串,并从该字符串中“获取墙颜色”。问题是,当我运行应用程序时,在点击playbutton后,我得到一个错误,即在第75行-if(stringWallColor.equals(“Default-Black”))中,stringWallColor为null。这是否意味着它使用公共静态字符串stringWallColor,默认为null?如何解决这个问题?通过设置stringWallColor=wallColorCombo.getSelectionMode

}


这是我的主课。我正在尝试从组合框中选择字符串,并从该字符串中“获取墙颜色”。问题是,当我运行应用程序时,在点击playbutton后,我得到一个错误,即在第75行-if(stringWallColor.equals(“Default-Black”))中,stringWallColor为null。这是否意味着它使用公共静态字符串stringWallColor,默认为null?如何解决这个问题?

通过设置
stringWallColor=wallColorCombo.getSelectionModel().getSelectedItem()来解决作为播放按钮的操作。

通过设置
stringWallColor=wallColorCombo.getSelectionModel().getSelectedItem()解决作为播放按钮的操作。

JAVA Swing或JFX也只有在调用setVisible(true)或show()后才处于活动状态。因此,您将获得stringWallColor的空值。顺便说一句,粘贴到组合框的“操作”在哪里?JAVA Swing或JFX也只有在调用setVisible(true)或show()后才处于活动状态。因此,您将获得stringWallColor的空值。顺便说一句,粘在组合框上的“动作”在哪里?
public static String stringWallColor;

public static void main(String[] args) {
    launch(args);
    System.out.println("Done!");
}

public void start(Stage primaryStage) throws Exception {

    Main.primaryStage = primaryStage;

    MenuBar MENU = new MenuBar();
    MenuGenerator.menuCreator(MENU);
    Button playButton = new Button("Play Game");

    ComboBox<String> wallColorCombo = new ComboBox<>();
    wallColorCombo.setPromptText("Choose wall color");
    wallColorCombo.getItems().addAll(
            "Default - Black",
            "Dark Green",
            "Dark Red",
            "Dark Gray",
            "Saddle Brown",
            "Midnight Blue",
            "Dark Magenta",
            "Crimson",
            "Navy");
    stringWallColor = wallColorCombo.getSelectionModel().getSelectedItem();

    gameGrid = new GridPane();
    GridPane root = new GridPane();
    root.add(MENU,0,0);
    root.add(gameGrid, 0, 1);
    gameScene = new Scene(root,600,625);

    GridPane startGrid = new GridPane();
    startGrid.setHgap(20);
    startGrid.setVgap(20);
    playButton.setLineSpacing(10);
    startGrid.add(playButton,8,12);
    startGrid.add(wallColorCombo,7,12);
    GridPane root0= new GridPane();
    root0.add(startGrid,0,1);
    Scene startScene = new Scene(root0, 400, 400);

    primaryStage.setScene(startScene);
    primaryStage.setTitle(GameEngine.GAME_NAME);
    primaryStage.show();
    System.out.println("Default save file not loaded yet");

    playButton.setOnAction(e -> {
        MenuGenerator.loadDefaultSaveFile(primaryStage);
        System.out.println("Default save file loaded");
        primaryStage.setScene(gameScene); });
}

public static Color getWallColor() {
    Color wallColor = Color.BLACK;

    if (stringWallColor.equals("Default - Black"))
        wallColor = Color.BLACK;
    if (stringWallColor.equals("Dark Green"))
        wallColor = Color.DARKGREEN;
    if (stringWallColor.equals("Dark Red"))
        wallColor = Color.DARKRED;
    if (stringWallColor.equals("Dark Gray"))
        wallColor = Color.DARKGRAY;
    if (stringWallColor.equals("Saddle Brown"))
        wallColor = Color.SADDLEBROWN;
    if (stringWallColor.equals("Midnight Blue"))
        wallColor = Color.MIDNIGHTBLUE;
    if (stringWallColor.equals("Dark Magenta"))
        wallColor = Color.DARKMAGENTA;
    if (stringWallColor.equals("Crimson"))
        wallColor = Color.CRIMSON;
    if (stringWallColor.equals("Navy"))
        wallColor = Color.NAVY;

    return wallColor;
}