Créer des JPanels dynamiques pour aller avec des JTabbedPaned [Résolu]

Signaler
Messages postés
7
Date d'inscription
dimanche 10 juillet 2005
Statut
Membre
Dernière intervention
12 avril 2006
-
dafrd
Messages postés
7
Date d'inscription
dimanche 10 juillet 2005
Statut
Membre
Dernière intervention
12 avril 2006
-
Bonjour =)

Voilà je voudrais que mon lorsque l'utilisateur choisisse un JMenuItem cela crée un nouvel onglet à chaque fois.
Je n'ai pas de problème au niveau de la création d'un onglet contenant le nom du JMenuItem mais j'ai un problème dans la création dynamique d'un JPanel à chaque nouvel onglet...Comment générer plusieurs JPanel différents'Est ce que j'ai été clair dans ma question? :p

Merci d'avance à tous

4 réponses

Messages postés
26
Date d'inscription
mardi 8 juin 2004
Statut
Membre
Dernière intervention
20 mai 2007

autant pour moi .. j'ai confondu avec les panels du .NET ... en java, panel est un simple conteneur, pas besoin de tabbedpage...

Sinon, je ne comprend toujour pas ta question dans ce cas. Tu a une action, qui va créer un nouveau JPanel et l'ajouter au tabbedpane ... ou est la difficultée ?

Enfin peut etre ta réponce est dans ces 3 petites classes : ( très vite fé, moche et buggé ... mais qui ouvre des panels différents avec un menu .. )

public class FenetrePrincipale extends JFrame implements ActionListener{
/**
* le tabbed pane de la fenetre principale
*/
private JTabbedPane tabbed_pane = new JTabbedPane();
/**
* constructeur...
*/
public FenetrePrincipale()
{
//creation du menu
JMenuBar menu_bar = new JMenuBar();
JMenu menu = new JMenu("Menu ");
menu_bar.add(menu);
JMenuItem item_texte = new JMenuItem("ouvrir panel texte");
item_texte.addActionListener(this);
menu.add(item_texte);

JMenuItem item_label = new JMenuItem("ouvrir label");
item_label.addActionListener(this);
menu.add(item_label);

this.setJMenuBar(menu_bar);

//ajou du tabbed pane
this.getContentPane().add(this.tabbed_pane);
}

/**
* point d'entré du programme
* @param args
*/
public static void main(String[] args) {
FenetrePrincipale fenetre = new FenetrePrincipale();
fenetre.show();
}

/**
* ici les actions sont gérés :
*/
public void actionPerformed(ActionEvent e) {
if( e.getActionCommand().compareTo("ouvrir panel texte") == 0)
{
this.tabbed_pane.add(new PanelTexte());
}
if( e.getActionCommand().compareTo("ouvrir label") == 0)
{
this.tabbed_pane.add(new PanelLabel());
}
}

==
et :
public class PanelLabel extends JPanel {
public PanelLabel()
{super();
this.add(new JLabel("voila le paneau label ..."));}

==

et :
public class PanelTexte extends JPanel {
public PanelTexte ()
{super();
this.add(new JTextPane());
}
Messages postés
26
Date d'inscription
mardi 8 juin 2004
Statut
Membre
Dernière intervention
20 mai 2007

clair : non mais on va essayer ...
alors :

tu fé une classe qui hérite de JPanel :

public class MonPanel extends JTabbedPage //il me semble pour le tabbed page ...
{

/***
* le panel de l'onglet
* /
//préfère les getter/setter que public ...
public JPanel le_jpanel = new JPanel;

/**
* constructeur pour onglet perso...
**/
public MonPanel ()
{
//tu inititialise ton JPanel ici ....
}


}//fin classe

après au lieu de faire un Add( new JTabbedPage("le nom") );
tu fé un Add( new MonPanel() ); et dans ton onglet yora un JPanel.... voila++
Messages postés
7
Date d'inscription
dimanche 10 juillet 2005
Statut
Membre
Dernière intervention
12 avril 2006

Hum merci pour cette réponse mais je pense que je n'ai pas été clair dans la description:
Le programme a un JMenu avec plusieurs choix. Chaque fois que l'utilisateur cliquera sur un choix, ça rajoutera un onglet à la fenêtre avec un nouveau JPanel.
Le problème dans le code ci-dessous, c'est que pour un onglet ça rajoute toujours le même panel...Ce que je voudrai c'est qu'à chaque nouvel on glet j'ai un panel de créé propre à l'onglet (j'ai testé en créant deux panels différents et cela fonctionne).

private void createTab(String nomClasse) {
Container ct = getContentPane();
JPanel pan1 = new JPanel();
JTabbedPane testTab = new JTabbedPane();
pan1.setBackground(Color.DARK_GRAY);
testTab.add(nomClasse,pan1);
ct.add(testTab);
pack();
}

createTab(e.getActionCommand()); //La je crée un onglet du nom du MenuItem Selectionné

Merci d'avance
Messages postés
7
Date d'inscription
dimanche 10 juillet 2005
Statut
Membre
Dernière intervention
12 avril 2006

Merci pour cette réponse =)


Mon problème venait qu'il rajoutait toujours un onglet à ma fenêtre sans tenir compte de ceux que j'avais déja créés, ils étaient donc créés les uns sur les autres...


Now ça focntionne...Merci à toi


Bonne journée - frd