【问题标题】:New Swing JLayer in Java 7Java 7 中的新 Swing JLayer
【发布时间】:2011-11-16 06:40:29
【问题描述】:
我刚刚了解 J7 中的一些新功能,并且对在 Swing 中添加这些 JLayers 感到困惑。由于它们太新了,我很难找到关于它们的优秀文献以及使用它们的最佳实践。
谁能指出我正确的方向或提供这些组件的作用以及它们(通常)用于什么目的的示例?
感谢您的任何意见!
【问题讨论】:
标签:
java
swing
components
【解决方案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/