2013-10-02 11 views
0

panel.add()은 일부 신비한 이유 때문에 빨간색입니다. panel은 바로 위에 초기화되었습니다!왜 'JPanel'이 작동하지 않습니까?

public class ShowImage { 

    ImageIcon image = new ImageIcon("D:/java.jpg"); 
    JLabel label = new JLabel("sdasd", image, JLabel.CENTER); 
    JPanel panel = new JPanel(new BorderLayout()); 
    panel.add(label, BorderLayout.CENTER); 
} 

답변

7

클래스에서 직접 메소드를 호출 할 수 없습니다. 나는 당신이 생성자에서 그것을 호출하기를 원한다고 생각합니다.

public class ShowImage { 
    ImageIcon image = new ImageIcon("D:/java.jpg"); 
    JLabel label = new JLabel("sdasd", image, JLabel.CENTER); 
    JPanel panel = new JPanel(new BorderLayout()); 

    public ShowImage(){ 
     panel.add(label, BorderLayout.CENTER); 
    } 
} 
4

이 코드를 모두 메서드에 넣어야합니다 (또는 적어도 panel.add 문). 당신은 그 코드 조각이 어느 곳에서나 수업에 매달리게 할 수는 없습니다. Java에서는 클래스의 아무 곳에서나 메서드를 호출 할 수 없습니다.

아마도 생성자 또는 init 메서드에 넣을 수 있습니다.

public class ShowImage { 
    ImageIcon image = new ImageIcon("D:/java.jpg"); 
    JLabel label = new JLabel("sdasd", image, JLabel.CENTER); 
    JPanel panel = new JPanel(new BorderLayout()); 

    public void someInitMethod() { // or even the constructor 
     panel.add(label, BorderLayout.CENTER); 
    } 
}