在我的程序中,我想通过 MenuItem 打开和关闭暗模式。它正在工作,但我有一个小问题,我不明白是什么导致了这个问题。
selectedProperty问题是,我必须在执行某些操作之前多次选择 CheckMenuItem 。
如果你运行我的 mvce,你应该会看到它(我想你必须点击它 3 次)。但在selectedProperty第一次激活后,它可以正常工作,直到您重新启动应用程序。
MVCE
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.CheckMenuItem;
import javafx.scene.control.MenuButton;
import javafx.scene.layout.BorderPane;
import javafx.stage.Stage;
public class DarkModeMVCE extends Application {
public static void main(String[] args) {
Application.launch(args);
}
@Override
public void start(Stage primaryStage) throws Exception {
BorderPane pane = new BorderPane();
Scene scene = new Scene(pane, 500, 500);
MenuButton menuButton = new MenuButton("Menu");
CheckMenuItem checkMenuItem = new CheckMenuItem("Darkmode");
checkMenuItem.setSelected(false);
checkMenuItem.setOnAction(aE -> checkMenuItem.selectedProperty().addListener((obs, wasSelected, isSelected) -> {
if (isSelected) {
pane.setStyle("-fx-background-color: black");
}
else {
pane.setStyle("-fx-background-color: white");
}
}));
menuButton.getItems().add(checkMenuItem);
pane.setCenter(menuButton);
primaryStage.setScene(scene);
primaryStage.setTitle("MVCE");
primaryStage.show();
}
}
任何人都可以解释为什么会发生这种情况吗?这是代码中的错误还是错误?
饮歌长啸
Cats萌萌
相关分类