2010-10-13 2 views
1

J'essaie d'utiliser une icône custome dans le titre du volet JOption plutôt qu'avec l'étiquette. Y a-t-il un moyen de le faire? J'utilise la classe Icon (comme indiqué ci-dessous) dans JOptionPane mais elle continue d'afficher l'icône dans la zone d'affichage principale plutôt que dans le titre. Voici le code:Utilisation d'icônes personnalisées dans le titre avec JOptionPane.showInputDialog

Icon icon = new ImageIcon(ApplicationManager.getApplicationImage().getImage()); 
String jid = (String)JOptionPane.showInputDialog(ApplicationManager.getMainWindow(), 
       Res.getString("label.enter.address"), 
       Res.getString("title.start.chat"), 
       JOptionPane.QUESTION_MESSAGE, 
       icon,      
       null, 
       selectedUser); 

Merci

Répondre

1

N'a pas essayé, mais vous pourriez obtenir de travailler avec un cadre interne, plutôt que d'utiliser une boîte de dialogue. Essayez de créer une instance de JOptionPane et appelez getInternalFrame(). JInternalFrame a une méthode setFrameIcon(Icon icon).

Modifier: Bien sûr, le parent de JInteralFrame doit être un JDesktopPane, mais en dehors de cela, cela devrait fonctionner.

+0

Cela ne fonctionnerait pas car j'ai une valeur pré-sélectionnée avec laquelle j'ai besoin de remplir la boîte de dialogue d'entrée et je ne peux donc pas utiliser le constructeur JOptionPane mais utiliser la méthode showInputDialog .. Merci. –

3

Essayez ce code ..

import javax.swing.JOptionPane; 
import javax.swing.JDialog; 
import javax.imageio.ImageIO; 
import java.awt.Image; 
import java.net.URL; 

class OptionPaneIcon { 

    public static void main(String[] args) throws Exception { 
     JOptionPane jop = new JOptionPane(
      "Message", 
      JOptionPane.QUESTION_MESSAGE, 
      JOptionPane.DEFAULT_OPTION 
      ); 

     JDialog dialog = jop.createDialog("Dialog Title"); 

     Image image = ImageIO.read(new URL(
      "http://www.gravatar.com/avatar/f1d58f7932b6ae8027c4e1d84f440ffe?s=128&d=identicon&r=PG")); 
     dialog.setIconImage(image); 
     dialog.setVisible(true); 
    } 
} 
+0

Excellent http://sscce.org/; malheureusement, certains L & F (par exemple Mac OS) ignorent le réglage. – trashgod

+0

Je l'ai seulement testé sur Windows. Je ne sais pas si cela fonctionne sur Linux. –

0

HI,

Cela ne fonctionne pas comme je l'ai une valeur pré sélectionnée que je dois remplir la boîte de dialogue d'entrée avec et par conséquent ne peux pas utiliser le constructeur JOptionPane mais plutôt que d'utiliser la méthode showInputDialog ..

par conséquent, je crois que je ne peux pas utiliser une icône custume lors de l'utilisation showInputDialog (.,.,.,.,.,.,.)

Merci.

1

JOptionPane prend son icône du cadre parent. Ainsi, vous pouvez définir l'icône sur un JFrame factice, et passer que dans l'appel JOptionPane:

BufferedImage image = ImageIO.read(new URL(
    "http://www.gravatar.com/avatar/f1d58f7932b6ae8027c4e1d84f440ffe?s=128&d=identicon&r=PG")); 
    JFrame frame = new JFrame(); 
    frame.setIconImage(image); 
    JOptionPane.showInputDialog(frame, "Enter Address", "Chat", 
      JOptionPane.QUESTION_MESSAGE, null, null, ""); 

Remarque, ce sera probablement causer des problèmes avec l'emplacement de la montre de dialogue, car il sera placé par rapport au mannequin JFrame est passé.

Questions connexes