Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème avec JButton

Jbutton et JColorChooser

Sujet résolu
    26 mai 2009 à 17:09:46

    Bonjours tout d'abord,
    J'ai un petit problème avec mon code ...
    En fait je voudrais avoir un bouton d'une taille de 40 x 40, qui change de couleur en fonction de la couleur choisie dans le JColorChooser, le problème c'est que le bouton ne prend pa sla taille définie de 40 x 40 et que le fond ne change pas... bref rien ne marche :)

    JButton coulbutt coulbutt = new JButton();
    			coulbutt.setPreferredSize(new Dimension(40,40));
    			coulbutt.setMinimumSize(new Dimension(40,40));
    			coulbutt.addActionListener(new ActionListener(){
    			public void actionPerformed(ActionEvent e){
    			// Change la couleur
    				couleur = JColorChooser.showDialog(null,"Choisir la couleur",couleur);
    				if(e3){
    						if(dessin.figureSelection().estSelectionnee() && dessin.figureSelection() != null ){
    							dessin.figureSelection().changeCouleur(couleur);
    							dessin.repaint();
    						}
    					}
    					if(e1){
    						dessin.trace(couleur);
    					}
    					if(e4){
    						dessin.setBackground(couleur);
    					}
    				if (couleur != null)
    				{ 
    					couleur = Color.BLACK; }
    					
    				}
    			});
    			coulbutt.setBackground(couleur);
    			toolbar.add(coulbutt);
    
    • Partager sur Facebook
    • Partager sur Twitter
      26 mai 2009 à 17:40:56

      Ah ben tout dépend du Layout utilisé.
      Les Layout utilisent seulement parfois certaines (tu vois le degré de certitude là ?) propriétés des Component.

      Bon sinon dans ton actionPerformed y'a plein de choses bizarres : tu fais choisir la couleur à l'utilisateur mais au final tu la mets à noir...

      Apparemment tu mets le JButton dans toolbar, je me demande bien ce que c'est (JToolBar peut-être ?).
      • Partager sur Facebook
      • Partager sur Twitter
        26 mai 2009 à 17:51:56

        Oui c'est une JToolbar, en fet c'est un paint, un projet que l'on doit faire en cours ... les e1, ... c'est des booleens qui permetent de changer le mode de fonctionnement( changement de la couleur du fond ..)
        le problème c'est que rien ne marche, meme les setMinimum :s
        • Partager sur Facebook
        • Partager sur Twitter
          26 mai 2009 à 18:44:02

          Là t'as tort car les setMinimumSize et compagnie fonctionnent. En revanche le Layout de ta JToolBar ne les prend pas en compte.

          Comme apparemment je n'ai pas été clair dans mon précédent post, il te suffit de modifier le Layout de ta JToolBar. Allez au pif :
          toolbar.setLayout(new FlowLayout());
          
          • Partager sur Facebook
          • Partager sur Twitter
            26 mai 2009 à 20:01:30

            merci :p
            Ca marche au niveau du setMinimumSize, mais la couleur de fond du bouton ne s'affiche toujours pas :s
            • Partager sur Facebook
            • Partager sur Twitter
              26 mai 2009 à 20:49:17

              Ecoute moi j'ai fait un code super pourri et ça marche :
              class Fenetre5 extends JFrame {
              
              	public Fenetre5() {
              		super();
              		JPanel j = new JPanel();
              		JToolBar tool = new JToolBar();
              		JButton jb = new JButton(), jb2 = new JButton();
              		jb.setPreferredSize(new Dimension(200, 200));
              		jb.setBackground(Color.BLACK);
              		jb2.setPreferredSize(new Dimension(50, 50));
              		tool.setLayout(new FlowLayout());
              		tool.add(jb);
              		tool.add(jb2);
              		j.add(tool);
              		add(j);
              		pack();
              		setDefaultCloseOperation(EXIT_ON_CLOSE);
              		setVisible(true);
              	}
              
              	public static void main(String[] args) {
              		new Fenetre5();
              	}
              
              }
              

              Vois ça avec ton code comme t'as des conditions un peu foireuses dans ton actionPerformed ça vient surement de là.
              Essaie de faire System.out.println(couleur); juste avant de faire bouton.setBackground(couleur); .
              Si t'as la couleur désirée et que cette modification a lieu "en live", càd alors même que le bouton est déjà affiché, alors tente un bouton.revalidate(); après avoir changé sa couleur.
              • Partager sur Facebook
              • Partager sur Twitter
                26 mai 2009 à 21:04:27

                Dans mon programme, si je remplace couleur par Color.BLACK le fond du bouton est bien noir.
                • Partager sur Facebook
                • Partager sur Twitter
                  27 mai 2009 à 11:28:03

                  Je dirais qu'il y a un soucis dans l'ordre de tes instructions.

                  1) Tu crées le bouton
                  2) Tu déclares une variable couleur (Initialisée à on-sait-pas-quoi, mais peu importe)
                  3) Tu lui ajoutes un actionListener, qui modifie une variable couleur
                  4) Tu appliques la couleur au bouton
                  5) Tu affiches le bouton

                  6) Eventuellement, tu exécutes l'action sur le bouton, qui crée un nouvel objet couleur... Dont tu ne fais rien.

                  (Ca, sauf erreur de ma part (J'suis pas aussi fiable que le compilateur), c'est ce que ton code *fait* ; probablement pas ce que tu veux qu'il fasse... :p )

                  Dans la méthode actionPerformed, il serait donc peut-être bon d'ajouter un petit :

                  coulbutt.setBackground(couleur);
                  


                  Alternative, au lieu de :

                  couleur = JColorChooser.showDialog(null,"Choisir la couleur",couleur);
                  


                  , qui crée un nouvel objet "Color", tu pourrais faire... Euh... Rien, en fait ^^ Je cherchais une méthode qui permettrait de modifier l'objet couleur existante (genre :

                  couleur.setColor(JColorChooser.showDialog(null,"Choisir la couleur",couleur));
                  


                  , mais ça n'a pas l'air d'exister). Donc ma première proposition doit être la bonne.
                  • Partager sur Facebook
                  • Partager sur Twitter
                    27 mai 2009 à 19:48:51

                    Merci :p
                    Manquais aussi la déclaration du bouton en final et sa marche niquel :p merci ^^
                    • Partager sur Facebook
                    • Partager sur Twitter

                    Problème avec JButton

                    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                    • Editeur
                    • Markdown