Probleme JFrame

Résolu
romainbisson Messages postés 88 Date d'inscription jeudi 25 octobre 2007 Statut Membre Dernière intervention 9 septembre 2014 - 6 juin 2008 à 13:14
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 - 6 juin 2008 à 14:42
Bonjour je souhaite effacer le contenut de ma Jframe et lors de l'action sur un bouton, je souhaite qu'elle soit redessiner mais je ne sais pas comment faire, merci de votre aide

Mon code

//************************************************************************************//
///////////////////////////////  INCLUSIONS  
/////////////////////////////////////////
//************************************************************************************//

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

public class Bisson extends JFrame implements MouseListener
{

private static final long serialVersionUID =1L;

String host;

/*************************** Déclarations Champs de Texte
*******************************/

static JTextField zone_nom;
static JTextField zone_prenom;
static JTextField zone_adresse;
static JTextField zone_code_postal;
static JTextField zone_ville;
static JTextField zone_telephone;

/***********************************Déclarations Boutons
********************************/

static JButton bouton_facture;
static JButton bouton_devis;
static JButton bouton_commande;

/********************************* Etiquette - Label - Image
******************************/

static JLabel logo;
static JLabel version;
static JLabel facture;
static JLabel devis;
static JLabel commande;

/*************************************    Image de fond    
*******************************/
static Image fond;

//
//**************************************************************************************
//                               PREMIER CONSTRUCTEUR
//
//**************************************************************************************

public Bisson(){

                //On donne un titre à la fenetre
                                super("Bisson Informatique");

                //Cette opération est réalisé lors de la fermeture de la fenetre
                                setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);

                //Taille de la fenetre 1024*768
                                setBounds(0,0,1024,768);

                //La fenetre n'est pas redimensionable
                                setResizable(false);

                        ImageIcon icon = new ImageIcon("images/logo.jpg");
                        logo = new JLabel();
                        logo.setIcon(icon);
                        logo.setBounds(40,250,450,300);

                /**** bouton facture *****/

                         bouton_facture = new JButton();
                         bouton_facture.setIcon(new ImageIcon("images/icone.gif"));
                         bouton_facture.setBounds(100,50,120,120);

                         facture = new JLabel("Facture");
                         facture.setForeground(Color.blue);
                         facture.setFont(new Font("Helvetica", Font.PLAIN, 20));
                         facture.setBounds(130,170,80,40);

                /**** bouton devis *****/

                         bouton_devis = new JButton();
                         bouton_devis.setIcon(new ImageIcon("images/icone.gif"));
                         bouton_devis.setBounds(300,50,120,120);

                         devis = new JLabel("Devis");
                         devis.setForeground(Color.blue);
                         devis.setFont(new Font("Helvetica", Font.PLAIN, 20));
                         devis.setBounds(335,170,80,40);

                /**** bouton commande *****/

                         bouton_commande = new JButton();
                         bouton_commande.setIcon(new ImageIcon("images/icone.gif"));
                         bouton_commande.setBounds(500,50,120,120);

                         commande = new JLabel("Commande");
                         commande.setForeground(Color.blue);
                         commande.setFont(new Font("Helvetica", Font.PLAIN, 20));
                         commande.setBounds(510,170,120,40);

                         version = new JLabel("Version 1.0");
                         version.setForeground(Color.blue);
                         version.setFont(new Font("Helvetica", Font.PLAIN, 28));
                         version.setBounds(870,680,200,50);

                         setResizable(false);

                          //création du container
                          JLabel container = new JLabel();
                          // chargement de l'image
                          ImageIcon background = new ImageIcon("images/fond.jpg");
                          //on s'assure que l'image soit bien chargée
                          background.getImage();
                          // charge l'image
                          container.setIcon(background);
                          //changement du layout (pour reprendre ce que tu as fait
                          container.setLayout(null);
                          //ajout des composants
                          container.add(bouton_facture);
                          container.add(facture);
                          container.add(bouton_devis);
                          container.add(devis);
                          container.add(bouton_commande);
                          container.add(commande);
                          container.add(logo);
                          container.add(version);
                          //ajout du container
                          setContentPane(container);

                          bouton_facture.addMouseListener(this);
                          bouton_devis.addMouseListener(this);
                          bouton_commande.addMouseListener(this);

                //On rend la fenetre lisible
                        setVisible(true);
                }

public void mouseClicked(MouseEvent e) {
    
    setVisible(false);
    new Bisson(host);    

}
//Invoked when a mouse button has been pressed on a component.
public void mousePressed(MouseEvent e) {}

//Invoked when a mouse button has been released on a component.
public void mouseReleased(MouseEvent e) {}

//Invoked when the mouse enters a component.
public void mouseEntered(MouseEvent e) {}

//Invoked when the mouse exits a component.
public void mouseExited(MouseEvent e) {}

public Bisson(String host){
    
    super("Bisson Informatique");
    setDefaultCloseOperation(DISPOSE_ON_CLOSE);
    setBounds(0,0,1024,768);
    setResizable(false);
    JLabel container1 = new JLabel();
    ImageIcon background1 = new ImageIcon("images/fond.jpg");
    background1.getImage();
    container1.setIcon(background1);
    
    ImageIcon icone0 = new ImageIcon("images/image_facture.jpg");
    JLabel image_facture = new JLabel();
    image_facture.setIcon(icone0);
    image_facture.setBounds(0,0,300,50);
    
    JButton bouton_sommaire = new JButton();
    bouton_sommaire.setIcon(new ImageIcon("images/sommaire.jpg"));
    bouton_sommaire.setBounds(500,100,221,47);
    
    ImageIcon icone1 = new ImageIcon("images/disque.jpg");
    JLabel image_disque = new JLabel();
    image_disque.setIcon(icone1);
    image_disque.setBounds(40,100,50,50);
    
    JButton disque_dur= new JButton();
    disque_dur.setIcon(new ImageIcon("images/bouton_disque.jpg"));
    disque_dur.setBounds(110,110,215,34);
    
    ImageIcon icone2 = new ImageIcon("images/ram.jpg");
    JLabel image_ram = new JLabel();
    image_ram.setIcon(icone2);
    image_ram.setBounds(40,150,50,50);
    
    JButton barettes_memoires= new JButton("BARETTES MEMOIRES");
    barettes_memoires.setIcon(new ImageIcon("images/bouton_ram.jpg"));
    barettes_memoires.setBounds(110,160,300,34);

    ImageIcon icone3 = new ImageIcon("images/alim.jpg");
    JLabel image_alim = new JLabel();
    image_alim.setIcon(icone3);
    image_alim.setBounds(40,200,50,50);
    
    JButton alimentations= new JButton();
    alimentations.setIcon(new ImageIcon("images/bouton_alim.jpg"));
    alimentations.setBounds(110,210,236,34);

    container1.add(image_facture);
    container1.add(bouton_sommaire);
    
    container1.add(image_disque);
    container1.add(disque_dur);
    
    container1.add(image_ram);
    container1.add(barettes_memoires);
    
    container1.add(image_alim);
    container1.add(alimentations);

    container1.add(version);
    container1.setLayout(null);
    setContentPane(container1);
    setVisible(true);
    
}

//Permet l'execution du programme
public static void main(String[] args){
    
        new Bisson();

        }

}

3 réponses

Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
6 juin 2008 à 14:42
Salut,

arggggg oubli la méthode paint........... et vire moi les mouseXXXX

si tu veux absolument TOUT enlever tu fais :
removeAll(); <- celui de la JFrame

si tu veux préserver le fond tu fais
container.removeAll();

voici un code d'exemple:
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;

public class Test extends JFrame implements ActionListener {

    private static final long    serialVersionUID    = 3078633967761312074L;
    private JMenuItem            menuRemove            = null;
    private JMenuItem            menuRestore            = null;

    public static void main(final String[] args) {
        new Test().setVisible(true);
    }

    public Test() {
        super("Test removeAll");
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setSize(800, 600);
        setLocationRelativeTo(null);

        // fleme de faire autrement
        final JMenuBar bar = new JMenuBar();
        bar.add(getMenuRestore());
        bar.add(getMenuRemove());
        setJMenuBar(bar);

        // pour garder l'exemple avec un JLabel comme container
        final JLabel container = new JLabel();
        container.setLayout(new FlowLayout());
        setContentPane(container);
        // on force le remplissage de la fenetre
        getMenuRestore().doClick();
    }

    private JMenuItem getMenuRemove() {
        if (menuRemove == null) {
            menuRemove = new JMenuItem();
            menuRemove.setText("RemoveAll");
            menuRemove.addActionListener(this);
        }
        return menuRemove;
    }

    private JMenuItem getMenuRestore() {
        if (menuRestore == null) {
            menuRestore = new JMenuItem();
            menuRestore.setText("RestoreAll");
            menuRestore.addActionListener(this);
        }
        return menuRestore;
    }

    public void actionPerformed(final ActionEvent e) {
        final Object o = e.getSource();
        if (o.equals(getMenuRemove())) {
            // vire tou les composants du container
            getContentPane().removeAll();
            getContentPane().repaint();// important
        } else if (o.equals(getMenuRestore())) {
            // place des boutons ou des labels dans le container
            for (int i = 0; i < 100; ++i)
                if ((i % 2) == 0)
                    getContentPane().add(new JButton("Button " + (i + 1)));
                else
                    getContentPane().add(new JLabel("Label " + (i + 1)));
            getContentPane().validate();// important
        }
    }

}

bien
que si tu dois faire des switch entre une IHM donnée et une autre (sans
gros changement sur les 2) tu devrais utiliser le layout CardLayout qui
est super adapté pour ça

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

OoWORAoO
3
cs_flolag Messages postés 113 Date d'inscription mardi 9 avril 2002 Statut Membre Dernière intervention 12 août 2016
6 juin 2008 à 13:27
dans ta methode paint() tu met des variable genre if boutonCliqué = true on redessine sinon on ne fait rien

-------------------
PortFolio
-------------------
0
romainbisson Messages postés 88 Date d'inscription jeudi 25 octobre 2007 Statut Membre Dernière intervention 9 septembre 2014
6 juin 2008 à 13:44
et on fait comment pour redessiner ;

public

Bisson(){

super(
"Bisson Informatique");
setDefaultCloseOperation(

DO_NOTHING_ON_CLOSE);
setBounds(0,0,1024,768);

setResizable(

false);

setResizable(

false);

//création du containerJLabel container =

new JLabel();

// chargement de l'imageImageIcon background =

new ImageIcon(
"images/fond.jpg");

//on s'assure que l'image soit bien chargéebackground.getImage();

// charge l'imagecontainer.setIcon(background);

//changement du layout (pour reprendre ce que tu as faitcontainer.setLayout(

null);

//ajout des composantscontainer.add(

bouton_facture);container.add(

facture);container.add(

bouton_devis);container.add(

devis);container.add(

bouton_commande);container.add(

commande);container.add(

logo);container.add(

version);

//ajout du containersetContentPane(container);

bouton_facture.addMouseListener(
this);

bouton_devis.addMouseListener(
this);

bouton_commande.addMouseListener(
this);

 

//On rend la fenetre lisiblesetVisible(

true);}

public

void mouseClicked(MouseEvent e) {

CODE Pour redessiner la fenetre

}//Invoked when a mouse button has been pressed on a component.

public

void mousePressed(MouseEvent e) {}

//Invoked when a mouse button has been released on a component.

public

void mouseReleased(MouseEvent e) {}

//Invoked when the mouse enters a component.

public

void mouseEntered(MouseEvent e) {}

//Invoked when the mouse exits a component.

public

void mouseExited(MouseEvent e) {}
0
Rejoignez-nous