.setIconImage();而是逐个改为所有帧

时间:2014-10-16 18:58:40

标签: java

如何为应用程序中存在的所有帧设置图标? 我不想使用frame.setIconImage(0); frame1.setIconImage(1); etc. 每次我创建一个框架。

最诚挚的问候, 马立克

2 个答案:

答案 0 :(得分:1)

创建一个扩展jframe的类。

public class customFrame extends JFrame{

    public customFrame() {
        try {
            this.setIconImage(ImageIO.read(new File("C:\\Users\\Madhawa.se\\Desktop\\gtg.PNG")));
        } catch (IOException ex) {
            Logger.getLogger(customFrame.class.getName()).log(Level.SEVERE, null, ex);
        }
    }


}

现在,当你创建jframes时,扩展该类[frame]而不是jframe。

喜欢跟随;

public class frame1 extends customFrame{
    public static void main(String[] args) {
        new frame1().setVisible(true);

    }
}

下一帧......

public class frame2 extends customFrame{
    public static void main(String[] args) {
        new frame2().setVisible(true);

    }
}

你也可以制作如下的框架

public static void main(String[] args) {
    customFrame frame1 = new customFrame();
    frame1.setTitle("title");
    frame1.add(new JLabel(""));
    frame1.setVisible(true);
}

答案 1 :(得分:0)

虽然您可以扩展JFrame并创建自定义实现,但您实际上并没有为框架添加太多新功能,这些功能可能会回来并困扰您。

另一种方法是创建一个框架工厂,它可以用来按照你想要的方式生成框架。这将允许您创建一系列方法来满足您的需求。

这也意味着您可以更改工厂方法的工作方式,而无需更改任何其他代码......

public class FrameFactory {
    public static JFrame createDefaultFrame() {
        JFrame frame = new JFrame();
        frame.setIconImage(ImageIO.read(...)));
        return frame;
    }

    public static JFrame createFrameWithTitle(String title) {
        JFrame frame = FrameFactory.createDefaultFrame();
        frame.setTitle(title);
        return frame;
    }
}