ComboBox中的setFullscreen

时间:2019-05-06 09:57:52

标签: javafx combobox fullscreen

您好,我正在为游戏编写UI。在这个用户界面中,我想要一个带有设置的场景。在设置中,我有一个ComboBox,我想要setFullscreen为真或假。实际上,我收到错误“无法从类型中静态引用非静态方法setFullScreen(boolean)”,该如何解决我的问题。我希望setFullscreen的BorderlessWindow println正常工作。

CONTROLLER CLASS;

package Menue;

public class SettingEinstellungen {


    @FXML
    private ComboBox<String> Combobox;                                                                  
    ObservableList <String> Auswahl = 
            FXCollections.observableArrayList("Fullscree","Windowmode","Borderless Window");        


    @FXML 
    Button exit;                                                                                               
    @FXML
    public void initialize() {                                                                              



        Combobox.setValue("Fullscree");
        Combobox.setItems(Auswahl);
        Combobox.getSelectionModel().select("Fullscreen");


        Combobox.getSelectionModel().selectedItemProperty().addListener(new ChangeListener<String>(){       
            public void changed(ObservableValue<? extends String> observable, String alt, String new) {

            if(new != null) {
                switch(new) {

                    case "Fullscreen":  System.out.println("Vollbildgeklickt" +alt +neu);
                            break;      
                    case "Window-mode":     System.out.println("Fenster\t" +alt);
                            break;
                    case "Borderless Window":   Stage.setFullScreen(true);          
                            break;   
                    default: ;
                            break;
                }
            }

            }

        });}

    //public void changeCombo(ActionEvent  event) {

        //Stage.setFullscreen(true)(comboBox.getValue(Vollbild));

    //}

    @FXML   
    public void exit_press (ActionEvent  event) throws IOException  {                                   

        Stage window = (Stage)((Node)event.getSource()).getScene().getWindow();
        //window.setFullScreen(true);
        //window.setScene(new Scene(FXMLLoader.load(new File("menue_UI_1.fxml").toURI().toURL())));

        Parent root_3 = FXMLLoader.load(getClass().getResource("menue_UI_2.fxml"));
        Scene scene_3 = new Scene(root_3);
        window.setScene(scene_3);

        window.setTitle("Hauptmenü");
        window.show();

    }


}

1 个答案:

答案 0 :(得分:0)

问题是您没有引用实际阶段,这就是为什么您要得到该错误的原因,您需要引用显示的实际阶段,可以通过在执行期间获取窗口来执行此操作,或者可以在以下位置初始化它启动程序时位于顶部

comboBox.getSelectionModel()
            .selectedItemProperty()
            .addListener((obs, oldVal, newVal) -> {

                if(newVal != null) {
                    System.out.println(newVal);
                    switch(newVal) {
                        case "Fullscreen":
                            System.out.println("Vollbildgeklickt" +oldVal + newVal);
                            break;
                        case "Window-mode":
                            System.out.println("Fenster\t" +newVal);
                            break;
                        case "Borderless Window":
                            Stage window = (Stage) comboBox.getScene().getWindow();
                            window.setFullScreen(true);
                            break;
                        default:
                            break;
                    }
                }

            });