我想在运行时更改JavaFXapplication的默认外观。我怎么能用ComboBox做到这一点?现在我使用此代码更改值:
setUserAgentStylesheet(STYLESHEET_MODENA);
有没有办法在运行时更改皮肤?
答案 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);
}
}