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

Composants Java Discussion :

JComboBox changer l'image de fond de l'editor


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de bankette
    Homme Profil pro
    Chef de Projet Web
    Inscrit en
    Mars 2007
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de Projet Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2007
    Messages : 135
    Par défaut JComboBox changer l'image de fond de l'editor
    Bonjour,

    Je suis débutant en swing, je dois personnaliser l'aspect graphique d'un JComboBox, je remplace donc les éléments par des images.

    J'ai bien réussi a modifier la flèche d'affichage de la popup. Mais je n'arrive pas a mettre une image de fond dans l'editor, qui est, si j'ai bien compris, un JTextField.

    Mon code ci dessous pour personnaliser l'image de la flèche (ça fonctionne) et pour définir une couleur de fond a mon editor, mais comment faire pour définir une iamge de fond pour mon editor?

    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
     
    public class MyComboBoxUI  extends BasicComboBoxUI {
        public static ComponentUI createUI(JComponent c) {
            return new MyComboBoxUI();
        }
     
        @Override
        protected JButton createArrowButton() {
          JButton button = new JButton();
          button.setIcon(new ImageIcon("images/fleche.png"));
          return button;
        }
     
        //@Override
        protected ComboBoxEditor createEditor()  {
          ComboBoxEditor editor = new MyEditor();
     
          return editor;
        }
     
     
        class MyEditor extends BasicComboBoxEditor {
     
    	public MyEditor() {
                super();
                this.editor.setBackground(Color.yellow);
    	}
     
    }
    Merci d'avance !!!

  2. #2
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Il te faut créer un editor de la même façon que tu as créé le renderer.

    C'est à dire que tu dois surcharger la méthode getEditorComponent de la classeMyEditor pour qu'elle envoie un composant contenant une image (par exemple un JLabel (opaque si tu veux avoir une couleur de fond).

  3. #3
    Membre confirmé Avatar de bankette
    Homme Profil pro
    Chef de Projet Web
    Inscrit en
    Mars 2007
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de Projet Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2007
    Messages : 135
    Par défaut
    Merci de ta réponse , j'ai essayé de surcharger ma méthode getEditorComponent mais mon souci c'est que du coup je perd tous les listeners que j'avais posé dessus.
    De plus, j'ai essayé de la surchargé par un JTextField car j'ai un JComboBox éditable, mais je ne sais pas non plus comment mettre une image de fond sur un JTextField...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
        class MyEditor extends BasicComboBoxEditor {
     
    	public MyEditor() {
                super();
    	}
     
            @Override
            public Component getEditorComponent(){
                JTextField retour = new JTextField();
                return retour;
            }
        }

  4. #4
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Dans ce cas là il faut tricher un peu, il faut commencer par avoir un JComponent héritant de JPanel et dessinant une image dans la méthode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    protected void paintComponent(Graphics g)
    . Appelons le ImagePanel.
    Puis on se base sur le fait que le getEditorComponent de la classe BasicComboBoxEditor renvoie un JTextField.
    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
        class MyEditor extends BasicComboBoxEditor {
            private Image image;
            private ImagePanel imPanel;
        public MyEditor(Image image) {
                super(); 
                this.image = image;
                imPanel = new ImagePanel(image);
        }
     
            @Override
            public Component getEditorComponent(){
                JTextField retour = (JTextField) super.getEditorComponent();
                imPanel.setBorder (retour.getBorder());
                retour.setBorder(BorderFactory.createEmptyBorder(0,0,0,0));
                retour.setOpaque(false);
                return retour;
            }
        }
    Et normalement le tour devrait être joué

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

Discussions similaires

  1. [Batch] Changer l'image de fond
    Par heliy dans le forum Scripts/Batch
    Réponses: 0
    Dernier message: 02/02/2011, 11h29
  2. changer l'image de fond et activer une checkbox
    Par groskanel dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 16/02/2010, 16h13
  3. Changer une image de fond d'un autre block.
    Par Darkus_91 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 28/01/2008, 12h06
  4. comment changer l'image de fond d'une cellule par un menu ?
    Par @rno0059 dans le forum Mise en page CSS
    Réponses: 18
    Dernier message: 25/06/2007, 00h06
  5. Réponses: 3
    Dernier message: 11/01/2007, 17h52

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