我是否需要另一种方法来使用ColorFactory类?
我刚刚在我的第一个Swing项目中找到了这个非常棒的ColorFactory
类。 这真的很酷:我现在可以将主要类中的命名颜色(例如“crimson”或“mediumaquamarine”)传递给createContentPane
Container
方法。
码:
frame.setContentPane(ContentPaneCreator.createContentPane("darkorange"));`
题:
我是否需要public final void setBackground(Color color, JPanel contentPane)
方法? 可以在createContentPane()
方法中完成所有操作吗? 感谢您的帮助。
import java.awt.Color; import java.awt.Container; import javax.swing.JPanel; public final class ContentPaneCreator extends JPanel { private static final long serialVersionUID = 1L; public static Container createContentPane(String color) { JPanel contentPane = new JPanel(); // awesome txt to Color conversions using the ColorFactory().getColor(); // written by The Lobo Project new ContentPaneCreator().setBackground( new ColorFactory().getColor(color), contentPane); contentPane.setOpaque(true); return contentPane; } public final void setBackground(Color color, JPanel contentPane) { contentPane.setBackground(color); } )
有些事情可能会受到更严格的审查:
-
当您计划扩展
JPanel
,通过构造函数提供String colorName
并将该名称存储在字段中供以后参考; 面板的backgroundColor
是一个绑定属性。 -
应该重新设计静态工厂
ColorFactory.getInstance()
,以使用按需初始化持有者习惯用法 。 -
该代码摘自Lobo项目 ,可能已经更新。
-
名称似乎是标准的 。
回答你的问题 – 我不明白为什么(或者为什么你需要开始,但干草)。
扩展答案:
它应该是:(如果我们正在查看同一段代码)
ColorFactory.getInstance().getColor(colorName);
另外明智的是你在每个实例化中创建颜色映射,这只是一种浪费。
我也不确定为什么你需要扩展JPanel,但这不是我的代码:P