2013-10-02 7 views
0

panel.add() является red для некоторых загадочных причин. 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); 
    } 
} 
Смежные вопросы