Java 7 中的新 Swing JLayer
Posted
技术标签:
【中文标题】Java 7 中的新 Swing JLayer【英文标题】:New Swing JLayer in Java 7 【发布时间】:2011-11-16 06:40:29 【问题描述】:我刚刚了解 J7 中的一些新功能,并且对在 Swing 中添加这些 JLayers 感到困惑。由于它们太新了,我很难找到关于它们的优秀文献以及使用它们的最佳实践。
谁能指出我正确的方向或提供这些组件的作用以及它们(通常)用于什么目的的示例?
感谢您的任何意见!
【问题讨论】:
这里是一个用于创建round buttons的JLayer示例 【参考方案1】:JLayer 可用于动态增强任何现有组件。
假设您有一些自定义按钮(例如 MyJButton),并且您想要添加鼠标悬停效果或一些阴影。传统上,您将创建一个继承自 MyJButton 的新类,该类将实现您的新功能。
这种方法的一个问题是新效果仅适用于 MyJButton(因为您的新类扩展了 MyJButton)。这种方法的另一个问题是您无法在运行时更改增强/效果,因为继承关系在编译时是固定的。
使用JLayer
,您可以将LayerUI
与任何现有的Component
(不仅仅是JButton 或MyJButton)放在一起,以便将您的自定义效果添加到组件中。如果您有一个进行着色的 LayerUI,您可以将它与 JButton、JTextField、JPanel 或任何其他组件放在一起以执行该着色。您还可以在运行时更改 LayerUI 和组件的组成。
JLayer
只是 decorator 模式的一个特例。
http://www.intermediatejava.com/2011/06/jlayer-for-swing/
【讨论】:
以上是关于Java 7 中的新 Swing JLayer的主要内容,如果未能解决你的问题,请参考以下文章
Java日期时间API系列7-----Jdk8中java.time包中的新的日期时间API类的特点
java:限制swing中的JTextField只能输入中文,字母,数字。