如何为应用程序中存在的所有帧设置图标?
我不想使用frame.setIconImage(0);
frame1.setIconImage(1);
etc.
每次我创建一个框架。
最诚挚的问候, 马立克
答案 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;
}
}