3

我一直在尝试在 Netbean 的 GUI 构建器中设置一个窗口,但没有成功。我尝试从我的主类访问 JFrame:

public void run(){

    JFrame frame = new JFrame("Title of Frame");
    frame.setIconImage(Toolkit.getDefaultToolkit().getImage("org/icon.png"));

}

它使用我的 icon.png 创建了一个与我的主窗口不同的新框架。我想知道是否有某种方法可以访问包含我的其余 UI 元素的 JFrame,并设置该图标。

我也尝试过 new SearchAppUI().setIconImage(null); 它没有做任何值得注意的事情。

直接设置图标:

JFrame.setIconImage("org/icon.png"); 

给我错误,非静态方法 setIconImage(java.awt.Image) 不能从静态上下文中引用。

有什么方法可以从 Netbean 的 swing desinger 预览或我的 run() 方法设置主 JFrame 的图标?

4

3 回答 3

7

OP有点过时了,但只是为了记录,试试这个:

frame.setIconImage(Toolkit.getDefaultToolkit().getImage(getClass().getResource("org/icon.png")));
于 2013-01-18T13:53:32.043 回答
3

NVM,我找到了一个解决方案:http ://www.youtube.com/watch?v=o_35iro4b7M

描述如何设置 jFrame 的图标和标题。基本上,它需要库

import javax.swing.JFrame;
import java.awt.image.BufferedImage;
import java.io.File;
import java.awt.Image;
import javax.imageio.ImageIO;

我现在非常想坚持使用 Netbean 的 guibuilder,至少在原型设计方面是这样。

于 2011-06-21T16:24:39.047 回答
1

首先。值得一读如何制作相框

您可以使用以下示例。

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.lang.reflect.InvocationTargetException;
import java.net.URL;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;

public class FrameWithIcon extends JFrame {

    public static void main(String[] args) {
        try {
            SwingUtilities.invokeAndWait(new Runnable() {

                public void run() {
                    FrameWithIcon myFrame = new FrameWithIcon();
                    myFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                    myFrame.setTitle("Frame with Icon");
                    myFrame.setLayout(new BorderLayout());
                    myFrame.setIconImage(
                        loadImageIcon("org/icon.png").getImage());

                    Dimension size = new Dimension(250, 100);
                    JPanel panel = new JPanel();
                    panel.setPreferredSize(size);

                    myFrame.add(panel, BorderLayout.LINE_START);
                    myFrame.setVisible(true);
                    myFrame.pack();
                }
            });
        } catch (InterruptedException ex) {
        } catch (InvocationTargetException ex) {
        }
    }

    /** Returns an ImageIcon, or null if the path was invalid. */
    private static ImageIcon loadImageIcon(String path) {
        URL imgURL = FrameWithIcon.class.getResource(path);
        if (imgURL != null) {
            return new ImageIcon(imgURL);
        } else {
            System.err.println("Couldn't find file: " + path);
            return null;
        }
    }
}
于 2011-06-21T05:03:48.593 回答