2016-09-02 2 views
0

Так что я пытаюсь отобразить изображение в jPanel в jFrame.Изображение не отображается в jPanel

(я предполагаю, что таким образом вы отобразить JPEG/PNG в JFrame) Вот что я делаю:

В конструкторе JFrame, загрузить изображение, создать ImageIcon и jLabel динамически (установите значок) и вставьте его в jPanel.

Я ранее создал JPanel с NetBeans IDE, на котором jPanelImage определяется в initComponents().

Если я просматриваю код с помощью отладчика, он загружает изображение самостоятельно, не выбрасывая никаких исключений.

Он также корректно запускает код без проблем.

Но мой jFrame остается пустым. Вот код:

public TransmissionFrame() { 
     initComponents(); 

     init(); 
    } 

    private void init() { 

    JLabel label = new JLabel("Java Technology Dive Log"); 
    ImageIcon image = null; 
    try { 
     image = new ImageIcon(ImageIO.read(new URL("http://i.imgur.com/6mbHZRU.png"))); 
    } catch(MalformedURLException mue) { 
     mue.printStackTrace(); 
    } catch(IOException ioe) { 
     ioe.printStackTrace(); 
    } 
    label.setIcon(image); 
    jPanelImage.add(label); 
    jPanelImage.validate(); 
} 

Но мой JFrame и JPanel все еще пусто, то почему?

+0

Вы добавляете свой jPanelImage к вашему JFrame? – Jacob

+1

Да, я статически создал его с помощью NetBeans. – Firecat

+0

Вы хотите перенести инициализацию метки и добавление метки в блок try catch. Я также переместил бы декларацию JLabel и попробую JLabel label = new JLabel (изображение); Затем добавьте ярлык на панель. – Jacob

ответ

2

обновление, назначая макет для вашего JPanel может быть решением

public TransmissionFrame() { 
     initComponents(); 

     init(); 
    } 

private void init() { 
JLabel label = new JLabel("Java Technology Dive Log"); 
ImageIcon image = null; 
try { 
    image = new ImageIcon(ImageIO.read(new URL("http://i.imgur.com/6mbHZRU.png"))); 
} catch(MalformedURLException mue) { 
    mue.printStackTrace(); 
} catch(IOException ioe) { 
    ioe.printStackTrace(); 
} 
label.setIcon(image); 
jPanelImage.setLayout(new FlowLayout()); 
jPanelImage.add(label); 

} 
+0

'size of panel' setSize ничего не сделает, если Container использует LayoutManager, а LayoutManager должен соответствующим образом настроить JLabel, содержащий «Icon». См. Http://stackoverflow.com/questions/1783793/java-difference-between-the-setpreferredsize-and-setsize-methods-in-compone – copeg

+0

Право, не обновляя мой ответ –

 Смежные вопросы

  • Нет связанных вопросов^_^