Java problème changement de JPanels dans JFra

Fermé
david-sa Messages postés 2 Date d'inscription dimanche 11 avril 2010 Statut Membre Dernière intervention 12 avril 2010 - 12 avril 2010 à 18:57
 TheRedXPeace - 4 juil. 2010 à 15:20
Bonjour,

J'ai un menu dans lequel je souhaiterais que lorsque l'on clique sur ajout ou suppression cela change le panel de la Frame.

Voici mon code, je ne trouves pas mon erreur et si il y a possibilité de simplifier le code je vous en serais très reconnaissant, merci!!!!

package Frame;


import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;

public class EtudiantFrame extends JFrame{
private JFrame fenetre1;

private JPanel panel_ajout;
private JPanel panel_suppression;

//Menu
private JMenuBar menu;
private JMenu options;
private JMenuItem ajout;
private JMenuItem suppression;

//Ajouter
private JPanel info_menu_der;
private JPanel info_nom;
private JPanel info_nom1;
private JPanel info_prenom;
private JPanel info_note1;
private JPanel info_note2;
private JPanel info_note3;
private JComboBox menu_der;
private JTextField nom;
private JTextField nom1;
private JTextField prenom;
private JTextField note1;
private JTextField note2;
private JTextField note3;
private JButton ajouter;
String[] sections = { "ING1LM", "ING1JV", "SIGL2", "SRT2","TRSE2","SIGL3","SRT3","TRSE3"};


public EtudiantFrame(){
fenetre1 = new JFrame();
panel_ajout = new JPanel();
panel_suppression = new JPanel();
//Menu
menu = new JMenuBar();
options = new JMenu("Options");
ajout = new JMenuItem("Ajout");
suppression = new JMenuItem("Suppression");

info_menu_der = new JPanel();
info_nom = new JPanel();
info_nom1 = new JPanel();
info_prenom = new JPanel();
info_note1 = new JPanel();
info_note2 = new JPanel();
info_note3 = new JPanel();
menu_der = new JComboBox(sections);
nom = new JTextField(20);
nom1 = new JTextField(20);
prenom = new JTextField(20);
note1 = new JTextField(5);
note2 = new JTextField(5);
note3 = new JTextField(5);
ajouter = new JButton("Ajouter");
}

public void init(){
fenetre1.setTitle("Etudiants");
fenetre1.setSize(300,240);
fenetre1.setLocationRelativeTo(null);
fenetre1.setResizable(true);
fenetre1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

//Menu
menu.add(options);
options.add(ajout);
options.add(suppression);
fenetre1.setJMenuBar(menu);

// onglet ajout

panel_ajout.setLayout(new BoxLayout(panel_ajout, BoxLayout.Y_AXIS));
panel_ajout.add(info_menu_der);
panel_ajout.add(info_nom);
panel_ajout.add(info_prenom);
panel_ajout.add(info_note1);
panel_ajout.add(info_note2);
panel_ajout.add(info_note3);
panel_ajout.add(ajouter);
panel_ajout.setVisible(false);
panel_suppression.setVisible(false);


//onglet suppression

panel_suppression.setLayout(new BoxLayout(panel_suppression, BoxLayout.Y_AXIS));
panel_suppression.add(info_nom1);

//infos etudiant

info_menu_der.add(new JLabel("Section : "));
info_menu_der.add(menu_der);
info_nom.add(new JLabel("Nom : "));
info_nom.add(nom);
info_nom1.add(new JLabel("Nom : "));
info_nom1.add(nom1);
info_prenom.add(new JLabel("Prenom : "));
info_prenom.add(prenom);
info_note1.add(new JLabel("note1 : "));
info_note1.add(note1);
info_note2.add(new JLabel("note2 : "));
info_note2.add(note2);
info_note3.add(new JLabel("note3 : "));
info_note3.add(note3);

//Evènements

ajouter.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent e) {
System.out.println("test ok");
}
});

ajout.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent e) {
panel_ajout.setVisible(true);
}
});

suppression.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent e) {
panel_ajout.setVisible(false);
panel_suppression.setVisible(true);
System.out.println("test supp");
}
});


fenetre1.add(panel_ajout);
fenetre1.add(panel_suppression);
fenetre1.setVisible(true);
}

}



Je lance mon application grâce a la méthode init() dans mon main
A voir également:

2 réponses

Bonjour, voila la solution la plus adaptée

import java.awt.Color;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;

public class EtudiantFrame extends JFrame{
private JFrame fenetre1;

private JPanel panel_ajout;
private JPanel panel_suppression;

//Menu
private JMenuBar menu;
private JMenu options;
private JMenuItem ajout;
private JMenuItem suppression;

//Ajouter
private JPanel info_menu_der;
private JPanel info_nom;
private JPanel info_nom1;
private JPanel info_prenom;
private JPanel info_note1;
private JPanel info_note2;
private JPanel info_note3;
private JComboBox menu_der;
private JTextField nom;
private JTextField nom1;
private JTextField prenom;
private JTextField note1;
private JTextField note2;
private JTextField note3;
private JButton ajouter;
String[] sections = { "ING1LM", "ING1JV", "SIGL2", "SRT2","TRSE2","SIGL3","SRT3","TRSE3"};


public EtudiantFrame(){
fenetre1 = new JFrame();
panel_ajout = new JPanel();
panel_suppression = new JPanel();
//Menu
menu = new JMenuBar();
options = new JMenu("Options");
ajout = new JMenuItem("Ajout");
suppression = new JMenuItem("Suppression");

info_menu_der = new JPanel();
info_nom = new JPanel();
info_nom1 = new JPanel();
info_prenom = new JPanel();
info_note1 = new JPanel();
info_note2 = new JPanel();
info_note3 = new JPanel();
menu_der = new JComboBox(sections);
nom = new JTextField(20);
nom1 = new JTextField(20);
prenom = new JTextField(20);
note1 = new JTextField(5);
note2 = new JTextField(5);
note3 = new JTextField(5);
ajouter = new JButton("Ajouter");
}

public void init(){
fenetre1.setTitle("Etudiants");
//modification1
//fenetre1.setLayout(new GridLayout(0,1));
fenetre1.setLayout(null);
fenetre1.setSize(300,240);
fenetre1.setLocationRelativeTo(null);
fenetre1.setResizable(true);
fenetre1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

//Menu
menu.add(options);
options.add(ajout);
options.add(suppression);
fenetre1.setJMenuBar(menu);
//infos etudiant

info_menu_der.add(new JLabel("Section : "));
info_menu_der.add(menu_der);
info_nom.add(new JLabel("Nom : "));
info_nom.add(nom);
info_nom1.add(new JLabel("Nom : "));
info_nom1.add(nom1);
info_prenom.add(new JLabel("Prenom : "));
info_prenom.add(prenom);
info_note1.add(new JLabel("note1 : "));
info_note1.add(note1);
info_note2.add(new JLabel("note2 : "));
info_note2.add(note2);
info_note3.add(new JLabel("note3 : "));
info_note3.add(note3);

// onglet ajout
panel_ajout.setSize(300,240);
panel_ajout.setLayout(new BoxLayout(panel_ajout, BoxLayout.Y_AXIS));
panel_ajout.add(info_menu_der);
panel_ajout.add(info_nom);
panel_ajout.add(info_prenom);
panel_ajout.add(info_note1);
panel_ajout.add(info_note2);
panel_ajout.add(info_note3);
panel_ajout.add(ajouter);
panel_ajout.setVisible(false);
panel_suppression.setVisible(false);
fenetre1.add(panel_ajout);
fenetre1.add(panel_suppression);


//onglet suppression
panel_suppression.setSize(300,240);
panel_suppression.setLayout(new BoxLayout(panel_suppression, BoxLayout.Y_AXIS));
panel_suppression.add(info_nom1);



//Evènements

ajouter.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent e) {
System.out.println("test ok");
}
});

ajout.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent e) {
panel_suppression.setVisible(false);
panel_ajout.setVisible(true);
}
});

suppression.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent e) {
panel_ajout.setVisible(false);
panel_suppression.setVisible(true);
System.out.println("test supp");
}
});



fenetre1.setVisible(true);
}
public static void main(String[] args) {
new EtudiantFrame().init();

}

}
0
Bonjour,

Cette solution fonctionne-t-il réellement ? Parce que pour mon cas, ça ne fonctionne pas. Cependant, je ne veux pas changer mais supprimer un panel. Mais le problème c'est après la suppression du panel.

En effet, lorsque je supprime un panel, les autres composants ne s'affichent pas (ou supprimés ?).

J'ai essayé d'utiliser la technique des JLayaredPane mais ça fonctionne pas non plus.

Si vous avez une idée de l'erreur, ça sera super sympa.

Cordialement,

TheRedXPeace !
0