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

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

JavaFX SplitPane 不會冒泡鼠標(biāo)事件

JavaFX SplitPane 不會冒泡鼠標(biāo)事件

忽然笑 2022-06-23 17:29:39
我有一個BorderPane. 在此窗格中,我已將幾個控件設(shè)置為頂部HBox。在中心我有 eSplitPane有兩個畫布。我想讓鼠標(biāo)在BorderPane它從SplitPane.如果我使用 asplitPane.setOnMouseMoved(...)我正確地得到了事件。但是 aBorderPane.setOnMouseMoved(...)僅在鼠標(biāo)懸停在頂部時才有效(如果HBox找到了)。似乎SplitPane正在消耗該事件。誰能證實(shí)這一點(diǎn)?如果是這樣,我如何讓偶數(shù)冒泡?請注意,當(dāng)我應(yīng)用過濾器時,會在BorderPane下降的過程中檢測到偶數(shù)。
查看完整描述

1 回答

?
qq_笑_17

TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超7個贊

大多數(shù)(如果不是全部)皮膚實(shí)現(xiàn)擴(kuò)展SkinBase,默認(rèn)情況下消耗所有鼠標(biāo)事件。您可以通過受保護(hù)的consumeMouseEvents(boolean)方法進(jìn)行配置。由于該方法受到保護(hù),您必須對皮膚進(jìn)行子類化(或使用反射)才能訪問它:


package com.example;


import javafx.scene.control.SplitPane;

import javafx.scene.control.skin.SplitPaneSkin;


public class MySplitPaneSkin extends SplitPaneSkin {


    public MySplitPaneSkin(SplitPane control) {

        super(control);

        consumeMouseEvents(false);

    }


}

皮膚類在 JavaFX 9 中成為公共 API。如果您使用的是 JavaFX 8,則需要擴(kuò)展內(nèi)部皮膚類。


然后,您將設(shè)置SplitPane.


SplitPane pane = ...;

pane.setSkin(new MySplitPaneSkin(pane));

您還可以通過屬性使用 CSS設(shè)置皮膚:-fx-skin


.split-pane {

    -fx-skin: com.example.MySplitPaneSkin;

}

請注意,使用上面的 CSS 將為樣式表覆蓋的所有 SplitPanes 設(shè)置外觀(除非您更改它們的樣式類)。您可能希望通過提供您SplitPane的 ID 并使用#id { ... }.


此外,查看SplitPaneSkinJavaFX 11.0.2 中的實(shí)現(xiàn),一個事件處理程序被添加到每個使用所有事件的分隔器。由于這是一個私有實(shí)現(xiàn)細(xì)節(jié),您無法更改此行為。換句話說,即使使用上面的代碼,BorderPane當(dāng)鼠標(biāo)懸停在分隔符上時,鼠標(biāo)事件也不會冒泡。


要考慮的另一件事是,其中的任何控件SplitPane也可能會消耗鼠標(biāo)事件。您需要為每個此類子控件應(yīng)用與上述類似的內(nèi)容。


查看完整回答
反對 回復(fù) 2022-06-23
  • 1 回答
  • 0 關(guān)注
  • 174 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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