我想創建一個按鈕類並使用ButtonUI來渲染它,而不是重寫paint組件方法。我不想爲所有的JButton使用這個ButtonUI。那可能嗎?我只見過UIManager.put("ButtonUI","MyCustomButtonUI")
,但這會影響所有JButton渲染嗎?是否可以限制放置操作的範圍?我可以僅爲JButton類的子集設置ButtonUI嗎?
1
A
回答
4
JButton.setUI(ButtonUI)
將UI設置爲僅一個JButton
。使用連同工廠:
public static JButton createStyledButton(String text) {
JButton button = new JButton(text);
button.setUI(STYLE_UI);
return button;
}
編輯:或者,因爲你說這是一定的子類不變,只需撥打setUI()
從構造該子類。
另一種替代可能會覆蓋子類中的方法getUIClassID()
。這將可能允許您仍然使用UIManager
來選擇使用哪種樣式,但我沒有測試它。
0
那麼,你可以在你的ButtonUI類中檢查給出的真實的組件類,並且只通過instanceof或任何其他機制覆蓋我們想要的子類的默認行爲。
但是,如果您像我一樣不喜歡重複撥打instanceof
,請使用另一種方法。由於按鈕是JButton的子類,因此它也是JButton和AbstractButton的子類,允許您在構造函數或其他位置調用,從而允許特定的渲染器,它完全不同於LnF應用程序。
相關問題
- 1. 我可以將Algolia設置爲僅使用我發送用於開發的記錄的子集嗎?
- 2. 我可以爲BufferReader設置超時嗎?
- 3. 我可以爲主鍵設置ignore_dup_key嗎?
- 4. 我可以爲serverAlias設置AccessFileName嗎?
- 5. 我可以在UIView子類上設置標籤屬性嗎?
- 6. Objective C:我可以設置子視圖爲firstResponder嗎?
- 7. ImageIcon不能設置爲JButton嗎?
- 8. 我可以自動設置我的子圖的邊距嗎?
- 9. 我們可以從bean類中爲localStorage(HTML5)設置值嗎?
- 10. Python - pint - 我可以將默認類型設置爲Decimal嗎?
- 11. JButton子類將自身設置爲JFrame的默認按鈕
- 12. 我可以將Orchard CMS設置爲我的「真實」網站的子目錄嗎?
- 13. 我可以編碼NSManagedObject的子類嗎?
- 14. C++:我們可以收集類型嗎?
- 15. 我可以設置Textview的屬性嗎?
- 16. 我可以設置UIWebBrowserView的寬度嗎?
- 17. Linux設備的類可以爲NULL嗎?
- 18. 我可以將類型限制爲僅包含可爲空的屬性嗎?
- 19. 我可以在帶有子視圖的NSView上設置layer.transform嗎?
- 20. 我們可以設置一個類的對象的屬性嗎?
- 21. 我可以從node.js設置ulimit嗎?
- 22. 我可以設置$嗎?在測試?
- 23. 我們可以設置字符串嗎?
- 24. Dropbox。我可以設置APP_KEY嗎?
- 25. 我可以設置UIFont高度嗎?
- 26. 我可以在BarButton上設置UITableViewCellAccessoryCheckmark嗎?
- 27. CSS - 你可以爲特定類的子元素設置樣式規則嗎?
- 28. 我可以參考另一個子類中的子類嗎?
- 29. Java,爲JButton設置ID
- 30. 我可以在require.config中爲子依賴項設置不同的路徑嗎?