2016-07-21 13 views
-2

Ich versuche, einem JDialog ein Favicon zuzuweisen. Dieser Code funktioniert, aber das Bild endet fest codiert.Wie benutzt man das Favicon von Parent für JDialog?

ImageIcon favImageIcon = new ImageIcon("../images/default.gif"); 
Image favIconImage= favImageIcon.getImage(); 
dialog.setIconImage(favIconImage); 

Der übergeordnete Rahmen verfügt bereits über ein Favicon. Wie kann ich JDialog so einstellen, dass er das Favicon seiner Eltern verwendet? Ich habe versucht , aber das ist eindeutig falsch.

+0

Das ist genau, warum ich frage. Ja, das 'super' compiliert nicht. Was ist die korrekte Syntax, um Favicon von Eltern zu erhalten? – sixtytrees

+0

Wenn die folgenden Antworten Ihr Problem nicht lösen, sollten Sie Ihre Frage erweitern und ein [mcve] hinzufügen. –

Antwort

0

Sie können eine Bilddatei aus Ressourcen in JAR-Datei verwenden.

URL url =getClass().getResource("/Media/something.png"); 
ImageIcon imageIcon = new ImageIcon(url); 

und dies wird nicht hart codiert!

3

Wie kann ich JDialog setzen, um favicon seiner Eltern zu verwenden?

Verwenden Sie die Mutter als Mutter des Dialogs. Vis.

enter image description here

import java.awt.image.BufferedImage; 
import javax.swing.*; 

public class DialogIconByParent { 

    public static void main(String[] args) { 
     Runnable r = new Runnable() { 
      @Override 
      public void run() { 
       try { 
        UIManager.setLookAndFeel(
          UIManager.getSystemLookAndFeelClassName()); 
       } catch (Exception useDefault) { 
       } 
       BufferedImage bi = 
         new BufferedImage(16, 16, BufferedImage.TYPE_INT_RGB); 

       JFrame f = new JFrame(new DialogIconByParent() 
         .getClass().getSimpleName()); 
       f.setIconImage(bi); 
       f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); 
       f.setLocationByPlatform(true); 

       f.setContentPane(new JLabel(new ImageIcon(
         new BufferedImage(400, 200, BufferedImage.TYPE_INT_RGB)))); 
       f.pack(); 
       f.setMinimumSize(f.getSize()); 

       f.setVisible(true); 

       // This hints to use the frame's icon, among other things. 
       JDialog d = new JDialog(f); 
       d.add(new JLabel(new ImageIcon(
         new BufferedImage(250, 100, BufferedImage.TYPE_INT_RGB)))); 
       d.pack(); 
       d.setLocationRelativeTo(f); 
       d.setVisible(true); 
      } 
     }; 
     SwingUtilities.invokeLater(r); 
    } 
} 
+0

Tatsächlich! Dies ist der Weg zu gehen. –

+0

@HovercraftFullOfEels Nach dem Betrachten der Frage war ich unsicher, was Sie meinten. ** Dann ** lese ich die Kommentare .. –