我是否需要另一种方法来使用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