使用ComboBox在JavaFX中设置默认外观

使用ComboBox在JavaFX中设置默认外观,javafx,javafx-2,javafx-8,Javafx,Javafx 2,Javafx 8,我想在运行时更改JavaFXapplication的默认外观。如何使用ComboBox实现这一点?现在,我使用以下代码更改值: setUserAgentStylesheet(STYLESHEET_MODENA); 有没有办法在运行时更改外观?您可以在ComboBox.setOnAction()方法体中使用setUserAgentStylesheet()。例如: import javafx.application.Application; import javafx.collections.FX

我想在运行时更改JavaFXapplication的默认外观。如何使用ComboBox实现这一点?现在,我使用以下代码更改值:

setUserAgentStylesheet(STYLESHEET_MODENA);

有没有办法在运行时更改外观?

您可以在
ComboBox.setOnAction()
方法体中使用
setUserAgentStylesheet()
。例如:

import javafx.application.Application;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.ComboBox;
import javafx.scene.layout.BorderPane;
import javafx.stage.Stage;

public class SetStyleDemo extends Application {

    public Parent createContent() {

        /* layout */
        BorderPane layout = new BorderPane();

        /* layout -> combobox */
        ObservableList<String> styles = FXCollections.observableArrayList(
                "Modena", "Caspian");

        ComboBox<String> cbStyles = new ComboBox<String>(styles);
        cbStyles.getSelectionModel().select(0);

        cbStyles.setOnAction(new EventHandler<ActionEvent>() {
            @Override
            public void handle(ActionEvent ae) {
                if (cbStyles.getSelectionModel()
                        .getSelectedItem().equals("Modena")) {

                    setUserAgentStylesheet(STYLESHEET_MODENA);
                } else {
                    setUserAgentStylesheet(STYLESHEET_CASPIAN);
                }
            }
        });

        /* add items to the layout */
        layout.setCenter(cbStyles);
        return layout;
    }

    @Override
    public void start(Stage stage) throws Exception {
        stage.setScene(new Scene(createContent()));
        stage.setWidth(200);
        stage.setHeight(200);
        stage.show();
    }

    public static void main(String args[]) {
        launch(args);
    }
}
导入javafx.application.application;
导入javafx.collections.FXCollections;
导入javafx.collections.ObservableList;
导入javafx.event.ActionEvent;
导入javafx.event.EventHandler;
导入javafx.scene.Parent;
导入javafx.scene.scene;
导入javafx.scene.control.ComboBox;
导入javafx.scene.layout.BorderPane;
导入javafx.stage.stage;
公共类SetStyleDemo扩展了应用程序{
公共父级createContent(){
/*布局*/
BorderPane布局=新建BorderPane();
/*布局->组合框*/
ObservableList styles=FXCollections.observableArrayList(
“摩德纳”、“里海”);
组合框cbStyles=新组合框(样式);
cbStyles.getSelectionModel().select(0);
setOnAction(新的EventHandler()){
@凌驾
公共无效句柄(ActionEvent ae){
if(cbStyles.getSelectionModel()
.getSelectedItem().equals(“Modena”)){
setUserAgentStylesheet(样式表_MODENA);
}否则{
setUserAgentStylesheet(样式表_CASPIAN);
}
}
});
/*将项目添加到布局中*/
布局。设置中心(cbStyles);
返回布局;
}
@凌驾
public void start(Stage)引发异常{
stage.setScene(新场景(createContent());
舞台布景宽度(200);
舞台设置高度(200);
stage.show();
}
公共静态void main(字符串参数[]){
发射(args);
}
}

您可以在
ComboBox.setOnAction()
方法体中使用
setUserAgentStylesheet()
。例如:

import javafx.application.Application;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.ComboBox;
import javafx.scene.layout.BorderPane;
import javafx.stage.Stage;

public class SetStyleDemo extends Application {

    public Parent createContent() {

        /* layout */
        BorderPane layout = new BorderPane();

        /* layout -> combobox */
        ObservableList<String> styles = FXCollections.observableArrayList(
                "Modena", "Caspian");

        ComboBox<String> cbStyles = new ComboBox<String>(styles);
        cbStyles.getSelectionModel().select(0);

        cbStyles.setOnAction(new EventHandler<ActionEvent>() {
            @Override
            public void handle(ActionEvent ae) {
                if (cbStyles.getSelectionModel()
                        .getSelectedItem().equals("Modena")) {

                    setUserAgentStylesheet(STYLESHEET_MODENA);
                } else {
                    setUserAgentStylesheet(STYLESHEET_CASPIAN);
                }
            }
        });

        /* add items to the layout */
        layout.setCenter(cbStyles);
        return layout;
    }

    @Override
    public void start(Stage stage) throws Exception {
        stage.setScene(new Scene(createContent()));
        stage.setWidth(200);
        stage.setHeight(200);
        stage.show();
    }

    public static void main(String args[]) {
        launch(args);
    }
}
导入javafx.application.application;
导入javafx.collections.FXCollections;
导入javafx.collections.ObservableList;
导入javafx.event.ActionEvent;
导入javafx.event.EventHandler;
导入javafx.scene.Parent;
导入javafx.scene.scene;
导入javafx.scene.control.ComboBox;
导入javafx.scene.layout.BorderPane;
导入javafx.stage.stage;
公共类SetStyleDemo扩展了应用程序{
公共父级createContent(){
/*布局*/
BorderPane布局=新建BorderPane();
/*布局->组合框*/
ObservableList styles=FXCollections.observableArrayList(
“摩德纳”、“里海”);
组合框cbStyles=新组合框(样式);
cbStyles.getSelectionModel().select(0);
setOnAction(新的EventHandler()){
@凌驾
公共无效句柄(ActionEvent ae){
if(cbStyles.getSelectionModel()
.getSelectedItem().equals(“Modena”)){
setUserAgentStylesheet(样式表_MODENA);
}否则{
setUserAgentStylesheet(样式表_CASPIAN);
}
}
});
/*将项目添加到布局中*/
布局。设置中心(cbStyles);
返回布局;
}
@凌驾
public void start(Stage)引发异常{
stage.setScene(新场景(createContent());
舞台布景宽度(200);
舞台设置高度(200);
stage.show();
}
公共静态void main(字符串参数[]){
发射(args);
}
}

您可以在
ComboBox.setOnAction()
方法体中使用
setUserAgentStylesheet()
。例如:

import javafx.application.Application;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.ComboBox;
import javafx.scene.layout.BorderPane;
import javafx.stage.Stage;

public class SetStyleDemo extends Application {

    public Parent createContent() {

        /* layout */
        BorderPane layout = new BorderPane();

        /* layout -> combobox */
        ObservableList<String> styles = FXCollections.observableArrayList(
                "Modena", "Caspian");

        ComboBox<String> cbStyles = new ComboBox<String>(styles);
        cbStyles.getSelectionModel().select(0);

        cbStyles.setOnAction(new EventHandler<ActionEvent>() {
            @Override
            public void handle(ActionEvent ae) {
                if (cbStyles.getSelectionModel()
                        .getSelectedItem().equals("Modena")) {

                    setUserAgentStylesheet(STYLESHEET_MODENA);
                } else {
                    setUserAgentStylesheet(STYLESHEET_CASPIAN);
                }
            }
        });

        /* add items to the layout */
        layout.setCenter(cbStyles);
        return layout;
    }

    @Override
    public void start(Stage stage) throws Exception {
        stage.setScene(new Scene(createContent()));
        stage.setWidth(200);
        stage.setHeight(200);
        stage.show();
    }

    public static void main(String args[]) {
        launch(args);
    }
}
导入javafx.application.application;
导入javafx.collections.FXCollections;
导入javafx.collections.ObservableList;
导入javafx.event.ActionEvent;
导入javafx.event.EventHandler;
导入javafx.scene.Parent;
导入javafx.scene.scene;
导入javafx.scene.control.ComboBox;
导入javafx.scene.layout.BorderPane;
导入javafx.stage.stage;
公共类SetStyleDemo扩展了应用程序{
公共父级createContent(){
/*布局*/
BorderPane布局=新建BorderPane();
/*布局->组合框*/
ObservableList styles=FXCollections.observableArrayList(
“摩德纳”、“里海”);
组合框cbStyles=新组合框(样式);
cbStyles.getSelectionModel().select(0);
setOnAction(新的EventHandler()){
@凌驾
公共无效句柄(ActionEvent ae){
if(cbStyles.getSelectionModel()
.getSelectedItem().equals(“Modena”)){
setUserAgentStylesheet(样式表_MODENA);
}否则{
setUserAgentStylesheet(样式表_CASPIAN);
}
}
});
/*将项目添加到布局中*/
布局。设置中心(cbStyles);
返回布局;
}
@凌驾
public void start(Stage)引发异常{
stage.setScene(新场景(createContent());
舞台布景宽度(200);
舞台设置高度(200);
stage.show();
}
公共静态void main(字符串参数[]){
发射(args);
}
}

您可以在
ComboBox.setOnAction()
方法体中使用
setUserAgentStylesheet()
。例如:

import javafx.application.Application;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.ComboBox;
import javafx.scene.layout.BorderPane;
import javafx.stage.Stage;

public class SetStyleDemo extends Application {

    public Parent createContent() {

        /* layout */
        BorderPane layout = new BorderPane();

        /* layout -> combobox */
        ObservableList<String> styles = FXCollections.observableArrayList(
                "Modena", "Caspian");

        ComboBox<String> cbStyles = new ComboBox<String>(styles);
        cbStyles.getSelectionModel().select(0);

        cbStyles.setOnAction(new EventHandler<ActionEvent>() {
            @Override
            public void handle(ActionEvent ae) {
                if (cbStyles.getSelectionModel()
                        .getSelectedItem().equals("Modena")) {

                    setUserAgentStylesheet(STYLESHEET_MODENA);
                } else {
                    setUserAgentStylesheet(STYLESHEET_CASPIAN);
                }
            }
        });

        /* add items to the layout */
        layout.setCenter(cbStyles);
        return layout;
    }

    @Override
    public void start(Stage stage) throws Exception {
        stage.setScene(new Scene(createContent()));
        stage.setWidth(200);
        stage.setHeight(200);
        stage.show();
    }

    public static void main(String args[]) {
        launch(args);
    }
}
导入javafx.application.application;
导入javafx.collections.FXCollections;
导入javafx.collections.ObservableList;
导入javafx.event.ActionEvent;
导入javafx.event.EventHandler;
导入javafx.scene.Parent;
导入javafx.scene.scene;
导入javafx.scene.control.ComboBox;
导入javafx.scene.layout.BorderPane;
导入javafx.stage.stage;
公共类SetStyleDemo扩展了应用程序{
公共父级createContent(){
/*布局*/
BorderPane布局=新建BorderPane();
/*布局->组合框*/
可观察列表样式=F