2016-08-26 1 views
1

Ich habe einen GridBagConstraints gbcImage und eine JLabel, die wie folgt initialisiert:Warum zeigt das JPanel nicht den ImageIcon an?

gbcImage.gridx = 1; // column 0 
gbcImage.gridy = 2; // row 2 
gbcImage.ipady = 100; 
gbcImage.ipadx = 100; 
JLabel label = new JLabel("", null, JLabel.CENTER); 
label.setOpaque(true); 
label.setBackground(Color.WHITE); 
panel.add(label, gbcImage); 

Wo Platte an einem JFrame hinzugefügt wird.

So implementiert ich ein MouseListener auf dem Etikett:

public void mouseClicked(MouseEvent e) { 
      JFileChooser jfc = new JFileChooser(); 

      int iRet = jfc.showOpenDialog(panel); 
      if (iRet == jfc.APPROVE_OPTION) 
      { 
       File file = jfc.getSelectedFile(); 

       try 
       { 
        BufferedImage bi = ImageIO.read(file); 
        image = new ImageIcon(bi); 
        JLabel label = new JLabel("", image, JLabel.CENTER); 
        panel.add(label, gbcImage); 
       } 
       catch (IOException e1) 
       { 
        e1.printStackTrace(); 
       } 
      } 
     } 

Aber es hat nicht funktioniert. Das Bild wird zur Laufzeit nicht im Panel angezeigt.

Was fehlt mir?

+0

haben Sie den Layoutmanager für Ihre JPanel angegeben? – ACV

+0

1) Für bessere Hilfe, früher, ein [MCVE] oder [kurze, unabhängige, korrekte Beispiel] (http://www.sscce.org/). 2) Eine Möglichkeit, Bilder für ein Beispiel zu erhalten, besteht darin, eine direkte Verbindung zu Bildern herzustellen, die in [diesem Q & A] (http://stackoverflow.com/q/19209650/418556) zu sehen sind. –

Antwort

3

Es ist nicht notwendig, ein neues JLabel zu erstellen. Das Problem ist, dass Sie dem Panel ein neues Label hinzugefügt haben, aber die Standardgröße ist (0, 0), weil Sie das Panel nicht reavalidate() und repaint() haben.

Es ist nicht notwendig, ein neues Etikett zu erstellen.

Stattdessen halten Sie einen Verweis auf das Originaletikett (wie Sie für das Panel zu tun) und dann ersetzen Sie einfach auf das Symbol:

image = new ImageIcon(bi); 
label.setIcon(image); 
+0

Danke! Es funktioniert perfekt! –

Verwandte Themen