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 :

ScrollBar dans JCombobox Personnalisé


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Décembre 2009
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Décembre 2009
    Messages : 67
    Par défaut ScrollBar dans JCombobox Personnalisé
    J'ai Un Jcombobox personalisé mais j'ai un problem ... l'image vous explique exactement le problem, y'a pas de scrollbarr
    Images attachées Images attachées  

  2. #2
    Membre éclairé
    Homme Profil pro
    Première S
    Inscrit en
    Juillet 2010
    Messages
    266
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France

    Informations professionnelles :
    Activité : Première S

    Informations forums :
    Inscription : Juillet 2010
    Messages : 266
    Par défaut
    si tu nous montrais un peu de code, on pourrai peut-être t'aider un peu plus ...
    NB
    Désolé, mais je n'aperçois pas de ComboBox ... enfin, il y en a en bas à gauche, mais on ne peu pas voir si elle on un JScrollBar ...

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Décembre 2009
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Décembre 2009
    Messages : 67
    Par défaut
    la liste a gauche c'est la list du jcombobox ... et comme vous voyer elle n'est pas scrollable... et d'ailleur je ne sais pas le problem est ce que c'est dans la jcombobox ou dans le jpopumenu. voila mon code source

    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
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
     
    /*
     * To change this template, choose Tools | Templates
     * and open the template in the editor.
     */
     
    package de.jugms.sd.components.comboboxes;
     
    /**
     *
     * @author hansolo
     */
    public class SDComboBox extends javax.swing.JComboBox
    {
        private de.jugms.sd.tools.RadiusType radiusType;    
     
        public SDComboBox()
        {
            super();        
            editor = new de.jugms.sd.components.comboboxes.SDComboBoxEditor();        
            setUI(new de.jugms.sd.ui.SDComboBoxUI(this));
            setPreferredSize(new java.awt.Dimension(150, 22));
            this.radiusType = de.jugms.sd.tools.RadiusType.ROUNDED;
        }
     
        public SDComboBox(javax.swing.ComboBoxModel model)
        {
            super(model);
            editor = new de.jugms.sd.components.comboboxes.SDComboBoxEditor();
            setUI(new de.jugms.sd.ui.SDComboBoxUI(this));
            setPreferredSize(new java.awt.Dimension(150, 22));
            this.radiusType = de.jugms.sd.tools.RadiusType.ROUNDED;
        }
     
        public SDComboBox(Object[] items)
        {
            super(items);
            editor = new de.jugms.sd.components.comboboxes.SDComboBoxEditor();
            setUI(new de.jugms.sd.ui.SDComboBoxUI(this));
            setPreferredSize(new java.awt.Dimension(150, 22));
            this.radiusType = de.jugms.sd.tools.RadiusType.ROUNDED;
        }
     
        public SDComboBox(java.util.Vector<?> items)
        {
            super(items);
            editor = new de.jugms.sd.components.comboboxes.SDComboBoxEditor();
            setUI(new de.jugms.sd.ui.SDComboBoxUI(this));
            setPreferredSize(new java.awt.Dimension(150, 22));
            this.radiusType = de.jugms.sd.tools.RadiusType.ROUNDED;
        }
     
        @Override
        public void setEditable(boolean editable)
        {
            super.setEditable(editable);
        }
     
        public void setRadiusType(de.jugms.sd.tools.RadiusType radiusType)
        {
            this.radiusType = radiusType;
            ((de.jugms.sd.components.comboboxes.SDComboBoxEditor) getEditor()).setRadiusType(radiusType);
            ((de.jugms.sd.ui.SDComboBoxUI) getUI()).getArrowButton().setRadiusType(radiusType);
            ((de.jugms.sd.components.comboboxes.SDComboBoxCellRenderer) getRenderer()).setRadiusType(radiusType);
        }
     
        public de.jugms.sd.tools.RadiusType getRadiusType()
        {
            return this.radiusType;
        }
     
        @Override
        public String toString()
        {
            return "SDComboBox";
        }
    }
    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
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
     
    /*
     * To change this template, choose Tools | Templates
     * and open the template in the editor.
     */
    package de.jugms.sd.components.comboboxes;
     
    import java.awt.event.ActionListener;
     
    import javax.swing.JScrollPane;
    import javax.swing.plaf.basic.BasicComboPopup;
     
     
    /**
     *
     * @author hansolo
     */
    public class SDComboPopup extends BasicComboPopup implements ActionListener
    {
        private javax.swing.JPopupMenu popupMenu = new javax.swing.JPopupMenu();
        private static final int LEFT_SHIFT = 22;
     
        public SDComboPopup(javax.swing.JComboBox combo)
        {
            super(combo);        
            popupMenu.setUI(new de.jugms.sd.ui.SDPopupMenuUI());
            this.comboBox = combo;
            comboBox.addActionListener(this);
        }
     
        private void clearAndFillMenu()
        {
     
            popupMenu.removeAll();
     
            javax.swing.ButtonGroup buttonGroup = new javax.swing.ButtonGroup();
     
            // add the given items to the popup menu.
            for (int i = 0; i < comboBox.getModel().getSize(); i++)
            {
                Object item = comboBox.getModel().getElementAt(i);
                de.jugms.sd.components.misc.SDMenuItem menuItem = new de.jugms.sd.components.misc.SDMenuItem(item.toString());
                menuItem.addActionListener(createMenuItemListener(item));                        
                buttonGroup.add(menuItem);
                popupMenu.add(menuItem);
     
                // if the current item is selected, make the menu item reflect that.
                if (item.equals(comboBox.getModel().getSelectedItem()))
                {
                    menuItem.setSelected(true);
                    popupMenu.setSelected(menuItem);
                }
            }
     
            popupMenu.pack();
            int popupWidth = comboBox.getWidth() + 5;
            int popupHeight = popupMenu.getPreferredSize().height;
            popupMenu.setPreferredSize(new java.awt.Dimension(popupWidth, popupHeight));
        }
     
        private java.awt.event.ActionListener createMenuItemListener(final Object comboBoxItem)
        {
            return new java.awt.event.ActionListener()
            {
                @Override
                public void actionPerformed(java.awt.event.ActionEvent event)
                {
                    comboBox.setSelectedItem(comboBoxItem);
                }
            };
        }
     
        @Override
        public void show()
        {
            clearAndFillMenu();
            java.awt.Rectangle popupBounds = calculateInitialPopupBounds();
     
            popupMenu.show(comboBox, popupBounds.x, popupBounds.y);
        }
     
        @Override
        public void hide()
        {
            popupMenu.setVisible(false);
        }
     
        @Override
        public boolean isVisible()
        {
            return popupMenu.isVisible();
        }
     
        private java.awt.Rectangle calculateInitialPopupBounds()
        {
            // grab the right most location of the button.
            int comboBoxRightEdge = comboBox.getWidth();
     
            // figure out how the height of a menu item.
            java.awt.Insets insets = popupMenu.getInsets();
     
            // calculate the x and y value at which to place the popup menu. by
            // default, this will place the selected menu item in the popup item
            // directly over the button.
            int x = comboBoxRightEdge - popupMenu.getPreferredSize().width - LEFT_SHIFT;
            int selectedItemIndex = popupMenu.getSelectionModel().getSelectedIndex();        
            int componentCenter = comboBox.getHeight() / 2;        
            int menuItemHeight = popupMenu.getComponent(selectedItemIndex).getPreferredSize().height;
            int menuItemCenter = insets.top + (selectedItemIndex * menuItemHeight) + menuItemHeight / 2;
            int y = componentCenter - menuItemCenter;
     
            return new java.awt.Rectangle(new java.awt.Point(x, y), popupMenu.getPreferredSize());
        }
     
        @Override
        public void actionPerformed(java.awt.event.ActionEvent event)
        {
            int popupWidth;
            int popupHeight;
     
            switch (comboBox.getSelectedIndex())
            {
                case -1:
                    comboBox.addItem(comboBox.getSelectedItem().toString());
                    popupWidth = comboBox.getWidth() + 5;
                    popupHeight = popupMenu.getSize().height + popupMenu.getSubElements()[0].getComponent().getHeight();
                    popupMenu.setPreferredSize(new java.awt.Dimension(popupWidth, popupHeight));
                    break;
                default:
                    if (comboBox.getSelectedItem().toString().isEmpty())
                    {
                        comboBox.removeItemAt(comboBox.getSelectedIndex());
                        popupWidth = comboBox.getWidth() + 5;
                        popupHeight = popupMenu.getSize().height + popupMenu.getSubElements()[0].getComponent().getHeight();
                        popupMenu.setPreferredSize(new java.awt.Dimension(popupWidth, popupHeight));
                    }
                    break;
            }
        }
     
        @Override
        public String toString()
        {
            return "SDComboPopup";
        }
    }
    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
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
     
    /*
     * To change this template, choose Tools | Templates
     * and open the template in the editor.
     */
    package de.jugms.sd.ui;
     
    import de.jugms.sd.components.comboboxes.SDComboBoxCellRenderer;
    import de.jugms.sd.components.comboboxes.SDComboBoxEditor;
     
     
    /**
     *
     * @author hansolo
     */
    public class SDComboBoxUI extends javax.swing.plaf.basic.BasicComboBoxUI implements javax.swing.SwingConstants
    {
        private de.jugms.sd.tools.RadiusType radiusType;    
        de.jugms.sd.components.buttons.SDArrowButton button;
     
        public SDComboBoxUI(javax.swing.JComboBox comboBox)
        {
            super();
            super.comboBox = comboBox;
     
            comboBox.setOpaque(false);
            comboBox.setForeground(new java.awt.Color(1.0f, 1.0f, 1.0f, 0.6f));
            comboBox.setFont(new java.awt.Font("Verdana", 0, 12));
            this.radiusType = de.jugms.sd.tools.RadiusType.ROUNDED;
     
            if (comboBox.isEditable())
            {
                comboBox.setEditor(new SDComboBoxEditor());
            }
            else
            {            
                comboBox.setRenderer(new SDComboBoxCellRenderer(comboBox));
            }
        }
     
        public de.jugms.sd.components.buttons.SDArrowButton getArrowButton()
        {
            return this.button;
        }
     
        @Override
        protected javax.swing.plaf.basic.ComboPopup createPopup()
        {
            popup = new de.jugms.sd.components.comboboxes.SDComboPopup(comboBox);        
            return popup;
        }
     
        @Override
        protected javax.swing.JButton createArrowButton()
        {
            button = new de.jugms.sd.components.buttons.SDArrowButton(SOUTH, EAST);
            button.setRadiusType(this.radiusType);
            button.setName("ComboBox.arrowButton");
            return button;
        }
     
        public void setRadiusType(de.jugms.sd.tools.RadiusType radiusType)
        {
            this.radiusType = radiusType;
        }
     
        public de.jugms.sd.tools.RadiusType getRadiusType()
        {
            return this.radiusType;
        }
     
        @Override
        public String toString()
        {
            return "SDComboBoxUI";
        }
    }

  4. #4
    Membre éclairé
    Homme Profil pro
    Première S
    Inscrit en
    Juillet 2010
    Messages
    266
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France

    Informations professionnelles :
    Activité : Première S

    Informations forums :
    Inscription : Juillet 2010
    Messages : 266
    Par défaut
    C'est le "truc" noir en haut à gauche au-dessus de l'onglet serveur ?
    Je crois que le ScrollBar n'apparaît pas parce qu'il n'y a pas besoin

    je pense qu'il existe une méthode pour forcer l'affichage des barres de défilement ... mais je ne sait plus laquelle peut-être setAutoScrolls, mais je ne te promet rien

Discussions similaires

  1. [css] scrollbar dans un div
    Par tooms2028 dans le forum Mise en page CSS
    Réponses: 9
    Dernier message: 17/06/2007, 09h18
  2. Position d'une ScrollBar dans un TRichEdit (ou TMemo)
    Par Troll dans le forum C++Builder
    Réponses: 9
    Dernier message: 24/02/2005, 15h18
  3. Position de la scrollbar dans un div
    Par VolVic dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 03/01/2005, 15h25
  4. deplacer scrollbar dans calque
    Par prodi_64 dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 21/12/2004, 12h18
  5. [VB.NET] Disparition scrollBar dans une DataGrid
    Par aphykite dans le forum Windows Forms
    Réponses: 4
    Dernier message: 06/10/2004, 10h29

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