第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

JavaFX:為什么我必須按幾次按鈕才能背景改變?

JavaFX:為什么我必須按幾次按鈕才能背景改變?

慕娘9325324 2023-09-20 17:10:25
在我的程序中,我想通過 MenuItem 打開和關(guān)閉暗模式。它正在工作,但我有一個小問題,我不明白是什么導(dǎo)致了這個問題。selectedProperty問題是,我必須在執(zhí)行某些操作之前多次選擇 CheckMenuItem 。如果你運行我的 mvce,你應(yīng)該會看到它(我想你必須點擊它 3 次)。但在selectedProperty第一次激活后,它可以正常工作,直到您重新啟動應(yīng)用程序。MVCEimport 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();    }}任何人都可以解釋為什么會發(fā)生這種情況嗎?這是代碼中的錯誤還是錯誤?
查看完整描述

2 回答

?
飲歌長嘯

TA貢獻(xiàn)1951條經(jīng)驗 獲得超3個贊

setOnAction()偵聽器偵聽適用于 MenuItem 的任何操作,因此當(dāng)您單擊 menuItem 時,它會執(zhí)行偵聽器內(nèi)的代碼,

此時將一個新偵聽器分配給 menuItem 上的選擇屬性,該偵聽器將偵聽是否選擇 menuItem下次應(yīng)用任何操作時,第一個操作不會被計算在內(nèi),接下來您要做的是取消選擇 menuItem,在您的情況下不執(zhí)行任何操作,然后再次重新選擇它以執(zhí)行所需的操作,因此無需為同一屬性設(shè)置兩個偵聽器只需監(jiān)聽選擇屬性的變化


checkMenuItem.selectedProperty().addListener((obs, wasSelected, isSelected) -> {


    if (isSelected) {

        pane.setStyle("-fx-background-color: black");

    }

    else {

        pane.setStyle("-fx-background-color: white");

    }


});


查看完整回答
反對 回復(fù) 2023-09-20
?
Cats萌萌

TA貢獻(xiàn)1805條經(jīng)驗 獲得超9個贊

setOnAction()偵聽器偵聽適用于 MenuItem 的任何操作,因此當(dāng)您單擊 menuItem 時,它會執(zhí)行偵聽器內(nèi)的代碼,

此時將一個新偵聽器分配給 menuItem 上的選擇屬性,該偵聽器將偵聽是否選擇 menuItem下次應(yīng)用任何操作時,第一個操作不會被計算在內(nèi),接下來您要做的是取消選擇 menuItem,在您的情況下不執(zhí)行任何操作,然后再次重新選擇它以執(zhí)行所需的操作,因此無需為同一屬性設(shè)置兩個偵聽器只需監(jiān)聽選擇屬性的變化


checkMenuItem.selectedProperty().addListener((obs, wasSelected, isSelected) -> {


    if (isSelected) {

        pane.setStyle("-fx-background-color: black");

    }

    else {

        pane.setStyle("-fx-background-color: white");

    }


});


查看完整回答
反對 回復(fù) 2023-09-20
  • 2 回答
  • 0 關(guān)注
  • 128 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號