我想要創建兩個或多個共享狀態的JButton
,即當鼠標按鈕被按下時,任何一個都被呈現爲被按下(又名「武裝」),或者如果它們是複選框,檢查/取消選中同步等在JButton之間共享狀態
對於用戶而言,它必須出現,就好像兩個按鈕都在同一按鈕,出現在多個地方的層級(在現實中搖擺不允許這樣。)
我可以通過創建一個單一的ButtonModel
並將相同的模型分配給兩個按鈕來獲得一半的路程。此同步他們的武裝/檢查/選擇的狀態等
然而,這是不按鈕之間共享這樣一個明顯的效果是聚焦 - 點擊一項按鈕提供該按鈕的焦點(由按鈕內的矩形指示)並將其從另一個按鈕上移除。我想渲染這兩個按鈕,就好像它們被聚焦,只要或者按鈕真的有焦點。
有沒有一個乾淨的方法來做到這一點?
理想情況下,我希望它獨立於所選的外觀。
編輯:我發現了共享ButtonModel
的另一個問題。當其中一個按鈕失去焦點時,它將模型的armed
和pressed
屬性設置爲false
。發生這種情況處理mousePressed
後,所以如果你按下第二個按鈕時,第一個按鈕有焦點,它不會進入按下狀態,直到你再次按下它。
我認爲你是對的,有必要擴展ButtonUI,但可以委託給默認的UI。這是我目前正在使用的技術的一部分。 – finnw 2010-02-03 22:32:49
這是什麼L&F?我在另一篇文章中看到了它。 – 2013-04-01 17:34:53
@davidblaine L&F =外觀 – 2013-04-01 17:36:01