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

时间:2014-08-04 19:54:07

标签: javafx javafx-2 javafx-8

我想在运行时更改JavaFXapplication的默认外观。我怎么能用ComboBox做到这一点?现在我使用此代码更改值:

setUserAgentStylesheet(STYLESHEET_MODENA);

有没有办法在运行时更改皮肤?

1 个答案:

答案 0 :(得分:3)

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

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);
    }
}
相关问题