Créer un évènement bouton pour des images [Résolu]

Goozisan 8 Messages postés mercredi 27 septembre 2006Date d'inscription 26 novembre 2006 Dernière intervention - 20 nov. 2006 à 09:49 - Dernière réponse : Goozisan 8 Messages postés mercredi 27 septembre 2006Date d'inscription 26 novembre 2006 Dernière intervention
- 21 nov. 2006 à 23:01
Bonjour!

Je suis étudiante débutante en Java et je bute sur un problème qui pourtant me paraissait simple à résoudre.

En fait, j'essaie d'afficher des images différentes dans une même zone en cliquant sur leurs boutons respectifs (Bouton 1 - Image 1 ; Bouton 2 - Image2)... J'ai ajouté  les ActionListener respectifs aux boutons puis j'ai créé une méthode "public void actionPerformed(ActionEvent e)".

Jusque-là pas de problèmes mais c'est dans quand j'écris les conditions type if, if else que ça bloque:

J'ai essayé celle-ci (en sachant que j'utilise GridBagLayout et que lbl1 et lbl2 ont les mêmes coordonnées):

"{

            Object o = e.getSource();

            if(o == btn1)
            {
                panel1.add(lbl1);
            }

            else if (o == btn2)
            {
                panel1.add(lbl2);
            }
}

Mais ça ne marche car il n'est apparement pas possible d'afficher une image de cette façon...

Merci d'avance pour vos précieux conseils.

Goozisan
Afficher la suite 

Votre réponse

5 réponses

Meilleure réponse
Goozisan 8 Messages postés mercredi 27 septembre 2006Date d'inscription 26 novembre 2006 Dernière intervention - 21 nov. 2006 à 23:01
3
Merci
Pour aider d'autres ayant eu le même problème, voici comment je l'ai résolu:
 
// Créer une zone pour afficher les photos et la textArea

panScroll = new JPanel();                                               // Panel pour dérouleur
derouleur = new JScrollPane();
JTextArea zoneTexte = new JTextArea();

panScroll.setLayout(null);
derouleur.setBounds(new Rectangle(393,208));        // Taille dérouleur
zoneTexte.setText("Zone Texte");
panScroll.add(derouleur);

separateur = new JSplitPane((JSplitPane.VERTICAL_SPLIT));
separateur.setDividerSize(5);                            // Défini la taille du séparateur
separateur.setTopComponent(panel1);         // Défini le contenu situé au dessus du séparateur (panel1)
separateur.setBottomComponent(panScroll);  // Défini le contenu situé au dessous du séparateur (panScroll)

Container SepCont = getContentPane();                // Création d'un conteneur pour le séparateur
SepCont.add(separateur);
--------

// Voici les évènements correspondants

    public void actionPerformed(ActionEvent e)
    {

        Object o = e.getSource();

        if(o == btn1)
            derouleur.setViewportView(img1);

        else if(o == btn2)
            derouleur.setViewportView(img2);

        else if(o == btn3)
            derouleur.getViewport().add(zoneTexte); //*** Problème pas encore résolu***
    }

Biensûr il y a toujours une possibilité d'améliorer car je ne suis que débutante.

A+++

Merci Goozisan 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 93 internautes ce mois-ci

Commenter la réponse de Goozisan
mouzart 162 Messages postés mardi 26 avril 2005Date d'inscription 6 novembre 2008 Dernière intervention - 20 nov. 2006 à 10:28
0
Merci
Slt,
   Peux tu poster ton code pour ke je j y jet un coup d oeil?
Commenter la réponse de mouzart
Twinuts 5283 Messages postés dimanche 4 mai 2003Date d'inscription 22 octobre 2018 Dernière intervention - 20 nov. 2006 à 10:49
0
Merci
Salut,

si ton but est de fair un affichage en 'pile' fais toi un panel image avec le layout CardLayout dessus puis affiche la bonne image celon le bouton.

sinon pour ton problème d'ajout d'image ton code ne peut pas fonctionner surtout avec un GridBagLayout enfait quand tu fai un add il faut lui donner les contraintes de positionnnement pour ton image avec un Gridbagcontraints soit au minimum

Gridbagcontraints gb = new Gridbagcontraints();
gb.gridx
gb.gridy
//et optionnelement
gb.anchor
gb.fill
....

et faire exemple panel1.add(lbl1, gb);

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA
Commenter la réponse de Twinuts
Goozisan 8 Messages postés mercredi 27 septembre 2006Date d'inscription 26 novembre 2006 Dernière intervention - 20 nov. 2006 à 20:53
0
Merci
Tout d'abord, un grand merci à vous deux pour vos réponses.

mouzart>> Voici mon code en entier (certaines parties sont encore vides car j'expérimente au fur et à mesure):

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;





public class ProjetJavaC extends JFrame
{
 private JTextField textchamp;
 private JTextArea textarea;
 private JButton btn1, btn2, btn3;
 private JScrollPane derouleur;
 private JLabel lbl1, lbl2;
 private ImageIcon bild1, bild2;
 private Box box1;





 void buildConstraints(GridBagConstraints gbc, int gx, int gy, int gw, int gh, int wx, int wy)
 {
  gbc.gridy = gy;
  gbc.gridwidth = gw;
  gbc.gridheight = gh;
  gbc.weightx = wx;
  gbc.weighty = wy;



 }





 public ProjetJavaC()
 {
   super("Projet Java C");


   // "Quitter"-val



   JMenuItem item1 = new JMenuItem("Quitter");



   item1.addActionListener
   (
    new ActionListener()
    {
     public void actionPerformed( ActionEvent event )
     {
      System.exit( 0 );
     }
       }
    );




   // "Ajout texte"-val



   JMenuItem item2 = new JMenuItem("Ajouter texte");



   item2.addActionListener
   (
    new ActionListener()
    {
     public void actionPerformed( ActionEvent event )
     {



     }
    }
        );




   // "Effacer texte"-val



   JMenuItem item3 = new JMenuItem("Effacer texte");
   item2.addActionListener
   (
    new ActionListener()
    {
     public void actionPerformed( ActionEvent event )
     {



     }
    }
    );




   // Barre de menu



   JMenu menu1 = new JMenu("Fichier");
   menu1.add(item1);



   JMenu menu2 = new JMenu("Info");
   menu2.add(item2);
   menu2.add(item3);



   JMenuBar mbar = new JMenuBar();
   setJMenuBar(mbar);
   mbar.add(menu1);
   mbar.add(menu2);



   GridBagLayout gridbag = new GridBagLayout();
   GridBagConstraints constraints = new GridBagConstraints();
   JPanel panel1 = new JPanel();
   panel1.setLayout(gridbag);



   constraints.fill = GridBagConstraints.BOTH;


 


           // Champ texte
   buildConstraints(constraints, 0, 0, 2, 1, 0, 0);
   constraints.fill = GridBagConstraints.HORIZONTAL;
   JTextField textchamp = new JTextField();
   gridbag.setConstraints(textchamp, constraints);
   panel1.add(textchamp);


   // Zone Bouton
   buildConstraints(constraints, 0, 1, 2, 1, 1, 1);
   constraints.fill = GridBagConstraints.NONE;
   JPanel panel2 = new JPanel();
   FlowLayout fl = new FlowLayout(FlowLayout.CENTER);
   panel2.setLayout(fl);





   JButton btn1 = new JButton("Image 1");



   panel2.add(btn1);



   JButton btn2 = new JButton("Image 2");
   panel2.add(btn2);



   JButton btn3 = new JButton("Zone texte");
   panel2.add(btn3);



   setContentPane(panel2);
   setVisible(true);



   gridbag.setConstraints(panel2, constraints);
   panel1.add(panel2);


 


   // Zone pic1
   buildConstraints(constraints, 0, 2, 2, 1, 100, 100);
   constraints.fill = GridBagConstraints.BOTH;
   constraints.anchor = GridBagConstraints.CENTER;





    ImageIcon img1 = new ImageIcon("wave.gif");
   JLabel lbl1 = new JLabel(img1, JLabel.CENTER);
   gridbag.setConstraints(lbl1, constraints);


 




            // Zone texte
   buildConstraints(constraints, 0, 2, 2, 1, 100, 100);
   constraints.fill = GridBagConstraints.BOTH;
   constraints.anchor = GridBagConstraints.CENTER;



   Box box1 = Box.createHorizontalBox();



   JTextArea textarea = new JTextArea();



   JScrollPane derouleur = new JScrollPane(textarea,
   ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED,
   ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
   box1.add(derouleur);
   gridbag.setConstraints(box1, constraints);


 


 


   // pic2 Area
   buildConstraints(constraints, 0, 2, 2, 1, 100, 100);
   constraints.fill = GridBagConstraints.BOTH;
   constraints.anchor = GridBagConstraints.CENTER;
   ImageIcon img2 = new ImageIcon("Surf.jpg");
   JLabel lbl2 = new JLabel(img2, JLabel.CENTER);
   gridbag.setConstraints(lbl2, constraints);


 




   // Contenu Panel
   setContentPane(panel1);
   setSize(400,300);
           setVisible( true );





 }





 public void actionPerformed(ActionEvent e)
  {



   Object o = e.getSource();



   if(o == btn1)
   {
    panel1.add(lbl1);
   }



   else if (o == btn2)
   {
    panel1.add(lbl2);
   }



   else if (o == btn3)
   {
    panel1.add(box1);
   }



 }





 public static void main(String arguments[])
 {



          ProjetJavaC app = new ProjetJavaC();
          app.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );



 }



}



Twinuts>> Je vais expérimenter tout ça, et je vous tiens au courant
Commenter la réponse de Goozisan
Goozisan 8 Messages postés mercredi 27 septembre 2006Date d'inscription 26 novembre 2006 Dernière intervention - 21 nov. 2006 à 21:11
0
Merci
J'ai réussi  en ajoutant un séparateur SplitPane et un dérouleur ScrollBar :-)

Merci en tout cas pour les réponses.

Goozisan
Commenter la réponse de Goozisan

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.