2013-07-23 100 views
9

好的,我一直在研究這個安靜點。我對Java相當陌生,但認爲這很容易。我已經嘗試了幾乎所有已在本網站上得到解答的方式,但仍然沒有運氣,通常當我看到這裏時,我能夠找到適合我所尋找的答案。有誰知道如何更改JFrame頂部的Java圖標。我非常肯定,它不是我的文件路徑,因爲我的所有圖像都在同一個文件夾中,並且它們都工作,這是我看起來無法工作的唯一一個。如何更改JFrame中的java圖標

這是我的程序主菜單的第一部分代碼,除了當我嘗試添加圖標圖像時,一切正常。我在下面輸入的代碼對於JFrame IconImage沒有任何內容,因爲它沒有工作,所以我刪除了它。所以如果有人知道如何使用這個代碼將會得到高度讚賞,非常感謝您的高級!

public class MainFrame 
{ 
private MyPanel main; 
private MyPanel2 create; 
private MyPanel3 update; 
private MyPanel4 find; 
JFrame frame = new JFrame("Main Menu:"); 

public void displayGUI() 
{ 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    JPanel contentPane = new JPanel(); 
    contentPane.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0)); 
    contentPane.setLayout(new CardLayout()); 
    main = new MyPanel(contentPane, this); 
    create = new MyPanel2(contentPane); 
    update = new MyPanel3(contentPane); 
    find = new MyPanel4(contentPane); 
    contentPane.add(main, "Main Menu"); 
    contentPane.add(create, "Create Part"); 
    contentPane.add(update, "Update Part"); 
    contentPane.add(find, "Find Part"); 
    frame.setLocation(200, 200); 
    frame.setSize(700, 580); 
    frame.setContentPane(contentPane); 

    frame.setVisible(true); 

} 
+0

郵政** **相關代碼只要。我們不希望通過您的代碼牆來搜索框架圖標被更改的部分。然後告訴我們你期望代碼的相關部分做什麼以及它做了什麼。 –

+0

這是更改圖標部分應該位於的代碼部分。我嘗試了許多不同的輸入代碼的方式,但這是JFrame的代碼沒有更改圖標代碼的原因。 –

+0

展示你的最佳嘗試,並告訴我們會發生什麼。提示:http://docs.oracle.com/javase/6/docs/api/javax/swing/JFrame.html#setIconImage%28java.awt.Image%29,http://docs.oracle.com/javase/ 6/docs/api/javax/swing/ImageIcon.html#getImage%28%29,http://docs.oracle.com/javase/tutorial/uiswing/components/frame.html –

回答

14

我有一個答案給你。首先,確保圖像位於文件夾中,而不是包中。接下來,插入這行代碼:

Image image = Toolkit.getDefaultToolkit().getImage(getClass().getResource("path/to/image.png")); 
ImageIcon icon = new ImageIcon(); 
setIconImage(icon.getImage()); 

此代碼從類路徑獲取圖像,並將其作爲一個圖像圖標,然後將其設置它。這應該將圖像圖標添加到應用程序。如果沒有,那就告訴我。

編輯:當你告訴我,那沒有工作,然後我決定採取第二次破解它... 首先,把你的圖像到一個完全獨立的文件夾。我通常稱這個/ res。接下來,把你的形象在那裏。現在,爲了加載,我採用了完全不同的路線。我決定使用ImageIO而不是默認加載。要加載圖像,您使用此代碼:

try { 
    frame.setIconImage(ImageIO.read(new File("res/icon.png"))); 
} 
catch (IOException exc) { 
    exc.printStackTrace(); 
} 

ImageIO工程加載圖像好得多。如果這仍然不起作用,那麼請告訴我。

如果要將其導出爲JAR,請將與您在程序中使用的文件夾名稱相同的文件夾放在與JAR相同的目錄中。

+0

這不適合我,我甚至確保它在一個文件夾,而不是一個包 –

+0

我應該把它放在代碼中我試過它正確的frame.setDefaultCloseOperation(JFrame .EXIT_ON_CLOSE); –

+0

我的代碼行正好在frame.setDefaultCloseOperation前面。這樣,我們知道在任何事情發生之前設置了圖標 – 2013-08-16 20:53:22

2

例如,在NetBeans項目中,在src文件夾中創建一個資源文件夾。

把你的圖像(jpg,...)放在那裏。

無論您使用ImageIOToolkit(包括的getResource), 您必須包括領先/在你的路徑映像文件:

Image image = Toolkit.getDefaultToolkit().getImage(getClass().getResource("/resources/agfa_icon.jpg")); 
setIconImage(image); 

如果此代碼是你JFrame類中,圖像添加作爲標題欄中的圖標添加到框架。

2

這對我來說很不錯。 只需在創建完JFrame後添加。

try { 
    Image image = new ImageIcon("/icons/image.jpg").getImage(); 
    frame.setIconImage(image); 
}catch(Exception e){ 
    System.out.println("Application icon not found"); 
} 
+1

請避免代碼唯一的答案。您應該始終提供問題原因的解釋,可能的解決方案和示例代碼(此處)。花一些時間來幫助別人。 –

0
  1. 粘貼圖像圖標(收藏。PNG)在同一封裝第一,在的JFrame構造
  2. 寫如下代碼:

setIconImage(Toolkit.getDefaultToolkit()的getImage(的getClass()的getResource(「最愛。 PNG「)));

注: - fav.png是圖標的名稱

0
this.setIconImage(new ImageIcon(getClass().getResource("/iconsfolder/iconsname.jpg")).getImage()); 
      // sets the Global icon for the system 

試試這個代碼這個代碼後提出:

public void displayGUI() 
{