假设我已经创建了一个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. 我该如何让自己的应用程序接受own-auth,OpenID等等?
- 2. 如何让我的自己的DataGridView列
- 3. 让用户等待使用Swing
- 4. 如何让我自己创建的shell使用.sh文件
- 5. 我该如何让自己更优雅?
- 6. 为什么不让heroku让我使用我自己的sendgrid帐户?
- 7. 使用我自己的等于方法为一组
- 8. 如何使用我自己的坐标
- 9. 如何使用我自己的脚本
- 10. 如何让我的.NET应用程序自己擦除?
- 11. 我不能让我的帐户使用linqtotwitter自己授权
- 12. 如何导入我自己的类为
- 13. 如何让自己的.NET DLL全球?
- 14. 如何让我自己的域名如abc.def?
- 15. 如何让我自己在PHP中自动增量?
- 16. 如何让AngularJS模块路由使用自己的控制器?
- 17. 我如何使自己的属性(HTML5)
- 18. 试图让我自己的vbscript
- 19. 如何从我自己的webapp查询我自己的web api?
- 20. ReactJS:如何使用的setState由我自己主动等维护项目
- 21. 如何仅为我自己使用开源软件?
- 22. 如何使用jadira使用我自己的用户类型usertype
- 23. 德尔福:如何让我自己的提示窗口?
- 24. Swift - 我如何让人们设置自己的Firebase后端?
- 25. 我如何让自己写的迭代器支持 - >?
- 26. 如何让Puppet设备管理发送我自己的命令?
- 27. 我如何让自己的形象得到反应?
- 28. 如何让我的批处理脚本自己添加代码
- 29. 如何让我的视图控制器设置为它自己的代理?
- 30. 使用自己的视频播放器为youtube,dailymotion,vimeo等
Swing JComponents接受HTML <= 3.2语法,然后我看不出任何问题,但JComponents默认为ONE LINE使用,除了JTextArea,JTextPane – mKorbel
我不认为它也可以做到。您可以查看'BasicHTML'类来了解如何使用'BasicEditorKit'。 – camickr