2013-01-31 353 views
1

我想將圖像添加到JFrame,add()方法正在生成一個錯誤,指出「無法找到符號:方法添加(JLabel)」...我該如何解決這個問題?將圖像添加到JFrame

**我仍然沒有從主要方法調用ImageLoading()方法。

import javax.swing.*; 

public class NetworkingGame { 

NetworkingGame(){ 
    JFrame jfrm = new JFrame("Angry Painters"); 
    jfrm.setSize(800, 480); 
    jfrm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    jfrm.setVisible(true); 

} 

public void ImageLoading(){ 
    ImageIcon i = new ImageIcon("angry-painters.jpg"); 
    JLabel jl = new JLabel(i); 
    add(jl); //The error is in this line 
} 

public static void main(String[] args) throws Exception{ 
    SwingUtilities.invokeLater(new Runnable(){ 

     @Override 
     public void run(){ 
      new NetworkingGame(); 
     } 
    }); 

    } 
} 

回答

4

JFrame jfrm的可見性受構造函數NetworkingGame限制。所以add方法不存在於NetworkingGame。讓你的JFrame成員NetworkingGame

public class NetworkingGame { 
    private JFrame jfrm; 

    NetworkingGame(){ 
     jfrm = new JFrame("Angry Painters"); 


    ... 

     JLabel jl = new JLabel(i); 
     jfrm.add(jl); 
+0

它的工作感謝:)任何想法爲什麼圖像不加載?雖然沒有任何錯誤! – InspiringProgramming

+1

@InspiringProgramming不知道,也許路徑不匹配。 –

+0

我應該寫出整個路徑還是將圖像放在目錄中,並按照上面的名稱來調用它? – InspiringProgramming

3

也許你應該寫

jfrm.add(jl); 

,並有jfrm作爲成員。

在你的情況下,你真的打電話this.add()這是不存在的。

2

您所呼叫的add方法,如果它是在你的NetworkingGame類的實例方法和類沒有任何方法,所以你所得到的編譯器錯誤,因爲編譯器無法找到任何方法這個名字在你的班級NetworkingGame中,所以將其添加到Jframe中。

NetworkingGame(){ 
    JFrame jfrm = new JFrame("Angry Painters"); 
    jfrm.setSize(800, 480); 
    jfrm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    jfrm.setVisible(true); 
    ImageIcon i = new ImageIcon("angry-painters.jpg"); 
    JLabel jl = new JLabel(i); 
    jfrm.add(jl); 
}