假設我已經創建了一個HTMLEditorKit
(和其他相關類)的sublcass以顯示一些自定義HTML標記。我希望能夠在JLabel
,JButton
等中使用這些自定義標籤。有沒有什麼方法可以創造我自己的外觀?也就是說,我想告訴swing「使用HTMLEditorKit
的這個實例來渲染HTML在JLabel
/etc」,而不管目前使用的是什麼樣的外觀和感覺。從我在Swing內部所做的小小的動作中,我不認爲這是可能的,但我很樂意被證明是錯誤的。如何讓Swing爲JLabel/JButton等使用我自己的HTMLEditorKit
4
A
回答
3
這是可以做到:
的關鍵是在類javax.swing.plaf.basic.BasicLabelUI
,這是對標籤一個基本的UI。
在paint方法,我們可以看到這樣的代碼:
View v = (View) c.getClientProperty(BasicHTML.propertyKey);
if (v != null) {
v.paint(g, paintTextR);
}
一個BasicHTML類是在Java的HTML功能的供應商,因此,從理論上說,如果你用自己的實現替換爲BasicHTML.propertyKey
客戶財產的視圖,那麼這個類將被使用,你可以做任何你想要呈現文本。
javax.swing.plaf.basic.BasicLabelUI
是大多數其他LAF標籤用戶界面的父級,但不是全部,因此它可能不適用於所有LAF。使用BasicHTML
類不支持HTML的LAF也不適用於您的修補程序。
但恕我直言,這是比功能更多的黑客。你正在編程實現,而不是接口。所以,如果你沒有真正認真的理由這樣做,我會建議找到一種更清晰的方式來呈現自定義HTML,比如JLabel子類。
+0
aaaaach,可能會很有趣+1 – mKorbel
1
它不能正常完成。 。 。如果你擴展了JLabel
和JButton
類,這可能是可能的,但是對於有更好的方法來做這些事情,這些似乎是很多工作[1]。雖然會很有用。
[1]:如果文本不需要是動態的,請嘗試使用JImagesIcons
中的圖像。
相關問題
- 1. 如何在griffon中使用我自己的swing類的子類
- 2. 我該如何讓自己的應用程序接受own-auth,OpenID等等?
- 3. 如何讓我的自己的DataGridView列
- 4. Android:如何讓我自己的EventListener?
- 5. 讓用戶等待使用Swing
- 6. 如何讓我自己創建的shell使用.sh文件
- 7. 我該如何讓自己更優雅?
- 8. 爲什麼不讓heroku讓我使用我自己的sendgrid帳戶?
- 9. 如何讓我的java程序自己運行並禁用windows key,cmd等
- 10. 使用我自己的等於方法爲一組
- 11. 如何使用我自己的腳本
- 12. 如何使用我自己的座標
- 13. 如何讓我自己的功能發揮作用?
- 14. 如何讓我的.NET應用程序自己擦除?
- 15. 我不能讓我的帳戶使用linqtotwitter自己授權
- 16. AsyncTask不會讓我使用我自己的類
- 17. 如何導入我自己的類爲
- 18. 如何使用我自己的類作爲edmx模型類?
- 19. 如何使用github頁面爲我自己的gitbook服務
- 20. 如何使用Facebook的API,讓你自己的Facebook圖片
- 21. 我們如何讓用戶在Django中爲表單創建自己的字段?
- 22. 如何讓自己的.NET DLL全球?
- 23. 如何讓我自己的域名如abc.def?
- 24. 如何讓我自己在PHP中自動增量?
- 25. 我如何使自己的屬性(HTML5)
- 26. 如何使我自己的流
- 27. 如何讓AngularJS模塊路由使用自己的控制器?
- 28. 用HTMLEditorKit工作
- 29. 如何爲我自己的類型設置我自己的表單表示
- 30. 試圖讓我自己的vbscript
Swing JComponents接受HTML <= 3.2語法,然後我看不出任何問題,但JComponents默認爲ONE LINE使用,除了JTextArea,JTextPane – mKorbel
我不認爲它也可以做到。您可以查看'BasicHTML'類來了解如何使用'BasicEditorKit'。 – camickr