如何设置所有Java Swing窗口的默认图标?

时间:2010-07-06 03:02:52

标签: java swing icons

如何设置所有Java Swing窗口的默认图标?

否则我必须为我创建的每一帧设置图标。

你有什么建议? 简单的hackings也被接受。

很多人

更新:如果您建议的方法可以保持现有的框架创建代码不变,那么最佳。 THX

2 个答案:

答案 0 :(得分:2)

创建一个extends JFrame

的Abstact类

在构造函数中设置你的图标。

创建扩展新Abstract Class的子类并在构造函数中调用super

public abstract class MainFrame extends JFrame {
    protected MainFrame() {
        this.setIconImage(null); // Put your own image instead of null
    }
}

public class ChildFrame extends MainFrame {
    public ChildFrame() {
        super();
    }
}

您也可以只从新班级

创建对象
public class MainFrame extends JFrame {
    public MainFrame() {
        this.setIconImage(null); // Put your own image instead of null
    }
}

public class Frame {

    private MainFrame mainframe = new MainFrame();

    public Frame() {
        super();
    }
}

答案 1 :(得分:0)

要使Windows图标全局更改而不更改旧代码,我正在使用此代码段

public static void fixWindowsIcons(final List<Image> iconImages) {
    PropertyChangeListener l = new PropertyChangeListener() {

        private Window prevActiveWindow;

        @Override
        public void propertyChange(PropertyChangeEvent evt) {
            final Window o = KeyboardFocusManager.getCurrentKeyboardFocusManager()
                    .getActiveWindow();
            if (o != null && prevActiveWindow != o) {
                prevActiveWindow = o;
                List<Image> windowIcons = o.getIconImages();
                if (windowIcons == null || windowIcons.size() == 0) {
                    o.setIconImages(iconImages);
                }
            }
        }
    };
    KeyboardFocusManager.getCurrentKeyboardFocusManager()
            .addPropertyChangeListener("activeWindow", l); //$NON-NLS-1$
}