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的主要内容,如果未能解决你的问题,请参考以下文章

Swing 中的 Java 继承/重用能力

Java日期时间API系列7-----Jdk8中java.time包中的新的日期时间API类的特点

处理中的新窗口

java:限制swing中的JTextField只能输入中文,字母,数字。

Java中Swing组件中的JTextArea,JList控件中的滚动条问题?帮忙解决!

java swing 中的列表框JList如何在程序中动态的添加和删除元素