Java7中的新Swing JLayer
我刚刚了解了J7中的一些新功能,对Swing中添加的这些JLayers感到困惑。因为它们太新了,我很难找到关于它们的好文献和使用它们的最佳实践
有没有人能给我指出正确的方向,或者提供一个例子,说明这些组件的作用以及它们(通常)的用途
谢谢你的意见
你可以在下面搜索框中键入要查询的问题!
我刚刚了解了J7中的一些新功能,对Swing中添加的这些JLayers感到困惑。因为它们太新了,我很难找到关于它们的好文献和使用它们的最佳实践
有没有人能给我指出正确的方向,或者提供一个例子,说明这些组件的作用以及它们(通常)的用途
谢谢你的意见
# 1 楼答案
JLayer可用于动态增强任何现有组件
假设你有一些自定义按钮(比如MyJButton),你想添加鼠标悬停效果或者一些阴影。传统上,您将创建一个继承自MyJButton的新类,该类将实现您的新特性
这种方法的一个问题是,新的效果只适用于MyJButton(因为您的新类扩展了MyJButton)。这种方法的另一个问题是,不能在运行时更改增强/效果,因为继承关系在编译时是固定的
使用
JLayer
,您可以将LayerUI
与任何现有的Component
(不仅仅是JButton或MyJButton)放在一起,以便将自定义效果添加到组件中。如果你有一个可以进行着色的LayerUI,你可以把它和一个JButton、JTextField、JPanel或任何其他组件放在一起来执行着色。还可以在运行时更改层和组件的组成JLayer
只是decorator模式的一个特例http://www.intermediatejava.com/2011/06/jlayer-for-swing/