2

ColorFactory我刚刚发现在我的第一个 Swing 项目中使用的这个非常棒的类。这真的很酷:我现在可以将主类中的命名颜色(例如“深红色”或“中型海蓝宝石”)传递给该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);
    }
)
4

2 回答 2

2

回答你的问题 - 我不明白为什么(或者你为什么需要开始,但是干草)。

扩展答案:

应该是:(如果我们正在查看同一段代码)

ColorFactory.getInstance().getColor(colorName);

否则,您会在每次实例化时创建颜色图,这只是一种浪费。

我也不确定为什么需要扩展 JPanel,但这不是我的代码:P

于 2012-07-27T00:59:29.417 回答
2

有几件事可能需要更仔细的审查:

  • 当您计划扩展JPanel时,通过构造函数提供 aString colorName并将名称存储在字段中以供以后参考;面板backgroundColor是绑定属性。

  • 静态工厂,ColorFactory.getInstance()应重构为使用按需初始化持有者习惯用法

  • 代码摘自Lobo 项目,可能已经更新。

  • 这些名称似乎是标准的。

于 2012-07-27T05:26:30.360 回答