IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AWT/Swing Java Discussion :

Probleme d'affichage d'une comboBox renderer dans un InternalFrame


Sujet :

AWT/Swing Java

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 4
    Points : 5
    Points
    5
    Par défaut Probleme d'affichage d'une comboBox renderer dans un InternalFrame
    Bonjour,

    Je me tourne vers la communauté informatique car j'ai un problème d'affichage des images d'une comboBox renderer dans un InternalFrame.

    Lorsque je click sur le comboxBox la liste des informations ne s'affiche que lorsque le comboBox se situe à une distance inférieur ou égal à la longueur de la liste !?

    Je pense que le problème se situe sur le repaint de la fenêtre !!

    J'ai joint le code afin que vous puissiez reproduire le problème.

    NB : il n'y a pas de problème avec un JFrame

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
     
    import java.awt.GridLayout;
    import java.awt.ScrollPane;
     
    import javax.swing.ImageIcon;
    import javax.swing.JComboBox;
    import javax.swing.JDesktopPane;
    import javax.swing.JFrame;
    import javax.swing.JInternalFrame;
    import javax.swing.JPanel;
     
     
    import design.pattern.surcharger.ComboBoxRenderer;
    import enums.Images;
     
    public class ComboBoxAdapterExample {
        public ComboBoxAdapterExample() {
        }
     
        public static void main(String[] a){
            // ComboBox + renderer
            //ImageIcon[] imagesComboBox = {(ImageIcon) Images.Add.getIcon(27,27),
       	//		                          (ImageIcon) Images.Examen.getIcon(27,27)};
     
            ImageIcon[] imagesComboBox = {new ImageIcon(),
                                                              new ImageIcon()};
     
            Integer[] intArray = new Integer[imagesComboBox.length];
            for (int i = 0; i < imagesComboBox.length; i++) {
                intArray[i] = new Integer(i);
            }
     
            JComboBox jComboBoxRenderer = new JComboBox(intArray);
            ComboBoxRenderer renderer= new ComboBoxRenderer(imagesComboBox);
            jComboBoxRenderer.setRenderer(renderer);
            jComboBoxRenderer.setMaximumRowCount(5);        
     
            // jGoodies
            /*JPanel panel = new JPanel(new FormLayout("default", "default"));
            CellConstraints cc = new CellConstraints();
            panel.add(jComboBoxRenderer, cc.xy(1, 1));*/
     
            JPanel panel = new JPanel(new GridLayout(1, 1));
            panel.add(jComboBoxRenderer, 0);
     
            //JInternalFrame
        	JInternalFrame jInternalFrame = new JInternalFrame();
        	jInternalFrame.setBounds(0, 0, 100, 100);
        	jInternalFrame.add(panel);
        	jInternalFrame.setVisible(true);
     
        	// DeskTop
        	JDesktopPane desktop = new JDesktopPane();
        	desktop.add(jInternalFrame);
        	ScrollPane scrollPane = new ScrollPane();
    	    scrollPane.add(desktop);
     
        	//Frame
    	    JFrame f = new JFrame("DeskTop + InternalFrame + Goodies");
            f.add(scrollPane);
            f.pack();
            f.setBounds(0, 0, 500, 500);
            f.setVisible(true);
        }
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
     
    import java.awt.Component;
    import java.awt.Font;
     
    import javax.swing.ImageIcon;
    import javax.swing.JLabel;
    import javax.swing.JList;
    import javax.swing.ListCellRenderer;
     
    public class ComboBoxRenderer extends JLabel
                               implements ListCellRenderer {
            private Font uhOhFont;
            private ImageIcon[] images;
     
            public ComboBoxRenderer(ImageIcon[] images) {
                setOpaque(true);
                setHorizontalAlignment(CENTER);
                setVerticalAlignment(CENTER);
                this.images = images;
            }
     
            public Component getListCellRendererComponent(
                                               JList list,
                                               Object value,
                                               int index,
                                               boolean isSelected,
                                               boolean cellHasFocus) {
                //Get the selected index. (The index param isn't
                //always valid, so just use the value.)
                int selectedIndex = ((Integer)value).intValue();
     
                if (isSelected) {
                    setBackground(list.getSelectionBackground());
                    setForeground(list.getSelectionForeground());
                } else {
                    setBackground(list.getBackground());
                    setForeground(list.getForeground());
                }
     
                //Set the icon and text.  If icon was null, say so.
                ImageIcon icon = images[selectedIndex];
                setIcon(icon);
     
     
                return this;
            }
     
            //Set the font and text when no image was found.
            protected void setUhOhText(String uhOhText, Font normalFont) {
                if (uhOhFont == null) { //lazily create this font
                    uhOhFont = normalFont.deriveFont(Font.ITALIC);
                }
                setFont(uhOhFont);
                setText(uhOhText);
            }
        }
    Merci de votre Aide

    Yutang

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    Bonjour,

    Je viens de trouver la réponse à ma question.

    Il faut faire un f.setContentPane(desktop) à la place du f.add(scrollPane).

    Yutang

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. probleme d'affichage d'une applet java dans page jsp
    Par wafabrj dans le forum Applets
    Réponses: 1
    Dernier message: 31/10/2012, 20h54
  2. Probleme d'affichage d'une tool Bar dans un panel
    Par amine1980 dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 28/03/2011, 23h48
  3. probleme d'affichage d'une meme image dans plusieurs sprite
    Par IP-Fix dans le forum ActionScript 3
    Réponses: 1
    Dernier message: 26/04/2008, 22h11
  4. Réponses: 8
    Dernier message: 21/02/2008, 15h30
  5. Probleme d'affichage d'une image dans un script cgi
    Par Jim_Nastiq dans le forum Web
    Réponses: 3
    Dernier message: 25/04/2006, 16h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo