2013-01-31 5 views
1

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에 존재하지 않습니다. 구성원을 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

이 클래스 NetworkingGame에서 인스턴스 메서드이고 클래스는 어떤 방법이없는 것처럼 당신은 add 메소드를 호출, 그래서 컴파일러는 어떤 방법을 찾을 수 없습니다 당신은 컴파일러 오류를 얻고있다 클래스 이름에 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); 
}