2016-07-21 7 views
-2

Я пытаюсь назначить favicon для JDialog. Этот код работает, но изображение заканчивается жестко.Как использовать родительский значок для JDialog?

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

Родительская рамка уже имеет значки. Как установить JDialog для использования значка его родителя? Я пробовал dialog.setIconImage(super);, но это явно неверно.

+0

Именно поэтому я прошу. Да, 'супер' не компилируется. Каков правильный синтаксис для получения значка от родителя? – sixtytrees

+0

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

ответ

0

вы можете использовать файл изображения из ресурсов в файле jar.

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

и это не будет жестко закодировано!

3

Как я могу установить JDialog, чтобы использовать значок его родителя?

Используйте родительский в качестве родителя диалога. Видимый

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

Действительно! Это путь. –

+0

@HovercraftFullOfEels Посмотрев на вопрос, я не знал, что вы имели в виду. ** Тогда ** Я прочитал комментарии .. –

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

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