Partage
  • Partager sur Facebook
  • Partager sur Twitter

probleme de code

Sujet résolu
    22 juin 2009 à 20:55:51

    Bonsoir, je suis entrain de créer une barre d'outils avec des boutons en java (mais je suis nul en java !! )Normal je débute
    Voici mon code, j'exposerais mon problème après :
    import java.awt.Color;
    import java.awt.FlowLayout;
    import java.awt.GradientPaint;
    import java.awt.Graphics;
    import java.awt.Graphics2D;
    import java.awt.Image;
    import java.io.File;
    import java.io.IOException;
    
    import javax.imageio.ImageIO;
    import javax.swing.JButton;
    import javax.swing.JFrame;
     
     
    public class fenetre extends JFrame
    {
    	private static final long serialVersionUID = 1L;
    	private JButton bouton = new JButton("flowLayout.NORTH");
        public fenetre()
        {
             this.setTitle("Bouton");
             this.setSize(300, 300);
             this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
             this.setLocationRelativeTo(null);
                   
             //On définit le layout à utiliser sur le contentPane
             //3 lignes sur 2 colonnes
             this.setLayout(new FlowLayout(3, 2, 3));
                    
             //On ajoute le bouton au contentPane de la JFrame
             this.getContentPane().add(new JButton("Vecteur"));
             this.getContentPane().add(new JButton("Limite"));
             this.getContentPane().add(new JButton("Angles"));
             this.getContentPane().add(new JButton("Somme"));
             this.getContentPane().add(new JButton("Racine"));
             this.getContentPane().add(new JButton("Integrale"));
             this.getContentPane().add(new JButton("Fractions"));
             this.getContentPane().add(new JButton("indice"));
             this.getContentPane().add(new JButton("Exposant"));
             this.setVisible(true);
        }
        private  JButton bouton2 = new JButton("BorderLayout.NORTH");
           	private String name;
            private Image img;
            public fenetre(String str)
            {
            	 super(str);
            	 this.name = str;
            	             
            	 try 
            	 {
            	      img = ImageIO.read(new File("barreicone/infini.png"));
            	 }
            	 catch (IOException e)
            	 {
            	      e.printStackTrace();
            	 }
            	                        
            	 
            }
            	    
            public void paintComponent(Graphics g)
            {
            	Graphics2D g2d = (Graphics2D)g;
            	GradientPaint gp = new GradientPaint(0, 0, Color.blue, 0, 20, Color.cyan, true);
            	g2d.setPaint(gp);
            	// g2d.fillRect(0, 0, this.getWidth(), this.getHeight());
            	g2d.drawImage(img, 0, 0, this.getWidth(), this.getHeight(), this);
            	g2d.setColor(Color.black);
            	g2d.drawString(this.name, this.getWidth() / 2 - (this.getWidth() / 2 /4), (this.getHeight() / 2) + 5);
            	            
            }
            	    
      		
            	
    }
    

    Il devrait y avoir un bouton avec en fond l'image de infini.png mais pas de bouton du tout est-il sous un autre?
    ai-je mal codé ?
    je n'en sais rien
    Merci de m'aider
    • Partager sur Facebook
    • Partager sur Twitter
      22 juin 2009 à 22:01:58

      Bonjour :) ,

      Première remarque : dans tes déclarations de bouton et bouton2, je suppose que tu sais que ta chaîne de caractère ne va faire que donner le texte à afficher du bouton et pas les placer.
      Deuxième remarque : je ne vois nulle part que tu ajoutes bouton et bouton2 à ta fenêtre.
      Troisième remarque : je pense que tu confonds FlowLayout et GridLayout : FlowLayout ne prend pas d'attributs comme le nombre de lignes ou de colonnes, il ne fait que centrer les boutons et leur faire passer une ligne. Voir le chapitre du tuto parlant des layout managers.
      Quatrième remarque : je ne pense pas qu'une fenêtre puisse avoir un méthode paintComponent(), seulement un constructeur.

      J'ai mis toutes les idées que j'ai trouvées pour corriger ce code : essaie de corriger ça et reviens si ça ne marche toujours pas. ^^

      Bonne chance !
      • Partager sur Facebook
      • Partager sur Twitter
        23 juin 2009 à 0:44:24

        J'ai tout repris mais je n'arrive pas à fixer la taille de ma fenetre.
        Je ne suis qu'au début du code je n'ai crrer que les boutons et c'est tout ! viendra apres les actions des boutons !! lol je sens que je vais rigoler
        Voici le code
        Que fau-t-il mettre pour règler la taille de la fenetre ?
        import java.awt.Container;
        
        import java.awt.FlowLayout;
        
        import javax.swing.*;
        
        
         
        class Fenetre {
         private JFrame fenetre; 
         private JLabel affichage; 
         private JTextField champA; 
         private JTextField champB; 
         private JButton bouton1; 
         private JButton bouton2; 
         private JButton bouton3; 
         private JButton bouton4; 
         private JButton bouton5; 
         private JButton bouton6; 
         private JButton bouton7; 
         private JButton bouton8; 
         private JButton bouton9;
         private JButton bouton10;
        
         public Fenetre() { 
        	 this.fenetre = new JFrame("Editeur d'équation"); 
        	
        	 
          
        	    // Le constructeur de JFrame prend en argument le nom de 
        	    // la fenêtre 
        	    this.affichage = new JLabel(); 
        	    this.champA = new JTextField(20); 
        	    this.champB = new JTextField(20); 
        	    
        	    // Le constructeur de JTextField prend en argument la taille 
        	    // en caractères du champ de saisie 
        	    this.bouton1 = new JButton("Angles"); 
        	    
        	    // Le constructeur de JButton prend en argument le nom du bouton 
        	    this.bouton2 = new JButton("Vecteurs"); 
        	    this.bouton3 = new JButton("limites");
        	    this.bouton4 = new JButton("Sommes");
        	    this.bouton5 = new JButton("Sommes");
        	    this.bouton6 = new JButton("Sommes");
        	    this.bouton7 = new JButton("Sommes");
        	    this.bouton8 = new JButton("Sommes");
        	    this.bouton9 = new JButton("Racines");
        	    this.bouton10 = new JButton("Racines n-ième");
        	    
        	    Container conteneur = fenetre.getContentPane(); 
        	     
        	    FlowLayout disposition1 = new FlowLayout();
        	    conteneur.setLayout(disposition1); 
        	    
        	    
        	     
        	    conteneur.add(this.bouton1); 
        	    conteneur.add(this.bouton2); 
        	    conteneur.add(this.bouton3);
        	    conteneur.add(this.bouton4);
        	    conteneur.add(this.bouton5); 
        	    conteneur.add(this.bouton6); 
        	    conteneur.add(this.bouton7);
        	    conteneur.add(this.bouton8);
        	    conteneur.add(this.bouton9);
        	    conteneur.add(this.bouton10);
        	    conteneur.add(this.champA); 
        	    conteneur.add(this.champB);
        	    conteneur.add(this.affichage);  
        	    this.fenetre.pack(); 
        	    this.fenetre.setVisible(true); 
         }
        
        
        }
        
        • Partager sur Facebook
        • Partager sur Twitter
          23 juin 2009 à 0:49:41

          pack() permet d'adapter la taille de la fenêtre en fonction de la taille des composants à l'intérieur.
          Toi tu voudrais plutôt utiliser setSize(int, int) qui permet de déterminer la taille initiale de la fenêtre.

          Petite remarque : comme tu n'utiliseras probablement plus jamais le FlowLayout que tu as créé, inutile de garder une référence dessus.
          Tu peux donc remplacer ces deux lignes
          FlowLayout disposition1 = new FlowLayout();
          conteneur.setLayout(disposition1);
          

          par la suivante
          conteneur.setLayout(new FlowLayout());
          

          • Partager sur Facebook
          • Partager sur Twitter
            23 juin 2009 à 1:00:55

            Bonsoir ,
            en effet je prefere utiliser setSize(;)
            • Partager sur Facebook
            • Partager sur Twitter

            probleme de code

            × 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