2012-01-23 73 views
0

這是我從一本名爲Java In Easy Steps的書中獲得GUI的基本示例,我按照示例實現了該代碼,但未顯示圖像。爲了使其顯示,我需要做什麼,是因爲URL getClassLoader?JPanel - 帶按鈕的窗口

理想情況下,我希望能夠將文件保存到我的工作區,並將該文件用作GUI的一部分。

import javax.swing.*; 

class Buttons extends JFrame { 

    JPanel pnl = new JPanel(); 
    ImageIcon tick = new ImageIcon("tickURL"); 
    ImageIcon cross = new ImageIcon("crossURL"); 

    JButton btn = new JButton("Click Me"); 
    JButton tickBtn = new JButton(tick); 
    JButton crossBtn = new JButton("STOP", cross); 

    ClassLoader ldr = this.getClass().getClassLoader(); 
    java.net.URL tickURL = ldr.getResource("tick.png"); 
    java.net.URL crossURL = ldr.getResource("cross.png"); 

    public Buttons(){ 

     super("Swing Window"); 
     setSize(500, 200); 
     setDefaultCloseOperation(EXIT_ON_CLOSE); 
     add(pnl); 
     setVisible(true); 

     pnl.add(btn); 
     pnl.add(tickBtn); 
     pnl.add(crossBtn); 

    } 

    public static void main(String[]Args){ 

     Buttons gui = new Buttons(); 

    } 

} 
+1

當編輯,突出你想成爲一個代碼示例,然後按CTRL + K文本。 – Jeffrey

+2

如果您的關於GUI的書中展示了在EDT上未調用GUI代碼的示例,我會很快將本書丟棄並切換到Swing教程。 – Robin

+0

Java In Easy Steps於2001年發佈。您不妨學習Cobol。切換到Swing教程。 http://docs.oracle.com/javase/tutorial/uiswing/ –

回答

1
ClassLoader ldr = this.getClass().getClassLoader(); 
java.net.URL tickURL = ldr.getResource("tick.png"); 
java.net.URL crossURL = ldr.getResource("cross.png"); 

JPanel pnl = new JPanel(); 
ImageIcon tick = new ImageIcon(tickURL);  // <-- a URL is needed here, not a string 
ImageIcon cross = new ImageIcon(crossURL); // same here 

JButton btn = new JButton("Click Me"); 
JButton tickBtn = new JButton(tick); 
JButton crossBtn = new JButton("STOP", cross); 
  1. 加載資產的類加載器(如果他們在你的classpath中),
  2. 用這些資產創建圖標,
  3. 創建按鈕與這些圖標

就這麼簡單。

+0

這是否包含文件路徑? –

+0

@HopelessProgrammer'filepaths'是什麼意思?這是一個資本不足的類名,還是你忘了增加一個空間? –

+0

您可以在getResource()方法中使用文件路徑,該文件路徑應與您的類路徑相匹配(例如,如果圖像位於gfx包中,則爲「gfx/tick.png」)。如果你想要一個文件路徑到外部文件,不要使用classLoader,只是一個File對象。 –

0

我是一名Java新手,正在翻閱同一本書中的相同代碼,結果相同(每個代碼塊都不顯示圖標)。對於無知的人(比如moi),這本書似乎是說這兩個圖標是作爲Java默認包的一部分提供的,當然這不是真的。

答案是這兩個.png文件包含在本書可用的下載中,作者假定您已將文件下載到當前目錄,所以代碼將會看到它們。

因此,上述兩種方法在圖標可用時確實有效。

的下載,請點擊這裏:http://ineasysteps.com/resource-centre/downloads/