我刚刚了解 J7 中的一些新功能,并对 Swing 中添加的这些 JLayers 感到困惑。由于它们太新了,我很难找到关于它们的优秀文献以及使用它们的最佳实践。
有人能给我指出正确的方向,或者提供一个示例来说明这些组件的作用以及它们(通常)的用途吗?
感谢您的任何意见!
最佳答案
JLayer 可用于动态增强任何现有组件。
假设您有一些自定义按钮(例如 MyJButton),并且您想要添加鼠标悬停效果或一些阴影。传统上,您将创建一个继承自 MyJButton 的新类来实现您的新功能。
这种方法的一个问题是新效果仅适用于 MyJButton(因为您的新类扩展了 MyJButton)。这种方法的另一个问题是您无法在运行时更改增强功能/效果,因为继承关系在编译时是固定的。
使用JLayer
,您可以将LayerUI
与任何现有的Component
(不仅仅是JButton或MyJButton)放在一起,以便添加您对组件的自定义效果。如果您有一个执行着色处理的 LayerUI,则可以将其与 JButton、JTextField、JPanel 或任何其他组件放在一起来执行着色处理。您还可以在运行时更改 LayerUI 和组件的组成。
JLayer
只是 decorator 的一个特例。模式。
关于java - Java 7 中的新 Swing JLayer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7404161/