Установка иконки для jFrame в Netbeans Swing Gui Builder - PullRequest
2 голосов
/ 21 июня 2011

Я безуспешно пытался настроить окно в графическом редакторе Netbean. Я попытался получить доступ к JFrame из моего основного класса как:

public void run(){

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

}

Который создает новый фрейм вне моего главного окна с моим icon.png. Я хотел бы знать, есть ли какой-нибудь способ получить доступ к JFrame, который содержит остальные мои элементы пользовательского интерфейса, и установить этот значок.

я тоже пробовал new SearchAppUI().setIconImage(null); который не делает ничего заметного.

Установка иконки напрямую:

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

выдает мне ошибку, на нестатический метод setIconImage (java.awt.Image) нельзя ссылаться из статического контекста.

Есть ли способ установить иконку основного JFrame либо из предварительного просмотра Swing Desinger, либо из моего метода run ()?

Ответы [ 3 ]

4 голосов
/ 18 января 2013

ОП немного устарел, но только для записи, попробуйте это:

frame.setIconImage(Toolkit.getDefaultToolkit().getImage(getClass().getResource("org/icon.png")));
3 голосов
/ 21 июня 2011

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;

. На данный момент я очень хотел придерживаться использования guibuilder от Netbean, по крайней мере для создания прототипов.

1 голос
/ 21 июня 2011

Прежде всего.Стоит прочитать Как сделать рамку .

Вы можете использовать следующий пример.

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;
        }
    }
}
...