OVH Cloud OVH Cloud

JToolBar

3 réponses
Avatar
laurent sturm
Salut,

Dans une JFrame j'ai un menu Projet
contenant deux sous menu ProjetX, ProjetY

Je souhaite afficher afficher la JToolBar
correspondant au action du menu.

j'ai essayer ce type de code,
dans le constructeur de ma class de type JFrame j'ai:

contentPane = (JPanel) this.getContentPane();

contentPane.setLayout(new BorderLayout());


toolbarX = new JToolBarProjetX(this);

toolbarX.setVisible(false);

contentPane.add(toolbarX,BorderLayout.WEST);


toolbarY = new JToolBarProjetY(this);

toolbarY.setVisible(false);

contentPane.add(toolbarY,BorderLayout.WEST);



Pour traiter le choix ProjetX, projetY j'ai:

if (actionProjet ="ProjetX"){

toolbarY.setVisible(false);

toolbarX.setVisible(true);

}

if (actionProjet = "ProjetY"){

toolbarX.setVisible(false);

toolbarY.setVisible(true);

}

Mais cela ne fonctionne pas.
quelqu'un a une idée ?


Merci @+




--
______________________
Visitez mon site
http://laurent.sturm.free.fr
______________________

3 réponses

Avatar
Thibaut Desmarest
Salut,

je ne suis que débutant en java, et je vais peut être dire une bêtise,
mais peut être que ton problème vient du fait que tu as essayé de mettre
deux composants "au même endroit" (BorderLayout.WEST).
Essaye de créer les deux barres mais de n'ajouter au Layout que celle
qui correspond au projet en cours.

J'espere t'avoir au moins donné une piste !


laurent sturm wrote:

Salut,

Dans une JFrame j'ai un menu Projet
contenant deux sous menu ProjetX, ProjetY

Je souhaite afficher afficher la JToolBar
correspondant au action du menu.

j'ai essayer ce type de code,
dans le constructeur de ma class de type JFrame j'ai:

contentPane = (JPanel) this.getContentPane();

contentPane.setLayout(new BorderLayout());


toolbarX = new JToolBarProjetX(this);

toolbarX.setVisible(false);

contentPane.add(toolbarX,BorderLayout.WEST);


toolbarY = new JToolBarProjetY(this);

toolbarY.setVisible(false);

contentPane.add(toolbarY,BorderLayout.WEST);



Pour traiter le choix ProjetX, projetY j'ai:

if (actionProjet ="ProjetX"){

toolbarY.setVisible(false);

toolbarX.setVisible(true);

}

if (actionProjet = "ProjetY"){

toolbarX.setVisible(false);

toolbarY.setVisible(true);

}

Mais cela ne fonctionne pas.
quelqu'un a une idée ?


Merci @+


Avatar
Isammoc
Salut,

je ne suis que débutant en java, et je vais peut être dire une bêtise,
mais peut être que ton problème vient du fait que tu as essayé de mettre
deux composants "au même endroit" (BorderLayout.WEST).
Essaye de créer les deux barres mais de n'ajouter au Layout que celle
qui correspond au projet en cours.

J'espere t'avoir au moins donné une piste !


AMHA, laurent a raison, c'est parce que tu as mis 2 objets au meme endroit,
essaye plutot de mettre un JPanel en CardLayout en BorderLayout.WEST, puis
tes 2 JToolBar dans le JPanel...

--
Isammoc


laurent sturm wrote:

Salut,

Dans une JFrame j'ai un menu Projet
contenant deux sous menu ProjetX, ProjetY

Je souhaite afficher afficher la JToolBar
correspondant au action du menu.

j'ai essayer ce type de code,
dans le constructeur de ma class de type JFrame j'ai:

contentPane = (JPanel) this.getContentPane();

contentPane.setLayout(new BorderLayout());


toolbarX = new JToolBarProjetX(this);

toolbarX.setVisible(false);

contentPane.add(toolbarX,BorderLayout.WEST);


toolbarY = new JToolBarProjetY(this);

toolbarY.setVisible(false);

contentPane.add(toolbarY,BorderLayout.WEST);



Pour traiter le choix ProjetX, projetY j'ai:

if (actionProjet ="ProjetX"){

toolbarY.setVisible(false);

toolbarX.setVisible(true);

}

if (actionProjet = "ProjetY"){

toolbarX.setVisible(false);

toolbarY.setVisible(true);

}

Mais cela ne fonctionne pas.
quelqu'un a une idée ?


Merci @+




Avatar
Xavier
Salut,

J'avais fait une réponse il y a 2 jours, elle n'est pas passée, désolé ...

[...]
contentPane.setLayout(new BorderLayout());
[...]
contentPane.add(toolbarX,BorderLayout.WEST);
[...]
contentPane.add(toolbarY,BorderLayout.WEST);


Déjà, 2 composants avec la même contrainte, c'est pas trop bon. Au mieux, le
layout s'en sort, mais c'est pas fait pour et pas propre ...

[...]
toolbarY.setVisible(false);
toolbarX.setVisible(true);
[...]


Ca peut fontionner. Essaie d'ajouter un "contentPane.doLayout()" après ces
lignes.

La solution plus propre est de mettre en WEST un JPanel avec un CardLayout.
Ce layout est prévu pour superposer plusieurs composant (panels) et en
montrer un, comme pour les onglets par exemple. Tu ajoutes tes 2 Toolbars
puis tu demande au cardlayout de montrer celle qu'il faut. Cherche un
exemple ou un tutoriel pour ce layout.

Xavier