Comment faire un menu en java Vertical

Fermé
schott - 17 avril 2007 à 09:01
 schott - 20 avril 2007 à 10:07
Bonjour à tous,
j'ai un petit soucis j'aimerais faire un menu en java , rien de bien compliqué je pense mais j'aimerais qu'il ne soit pas horizontale mais vertical est ce possible si oui comment ?
je vous remercie davance !!

je vous donne mon code:

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

public class MenuGeneral {

public static void main(String[] args) {

JFrame mainFrame = new JFrame();

// Menu General
JMenuBar mainMenu = new JMenuBar();

//Projet
JMenu menuProjet = new JMenu("Projet");
mainMenu.add(menuProjet);
JMenuItem un = new JMenuItem("1");
JMenuItem deux = new JMenuItem("2");
menuProjet.add(un);
menuProjet.add(deux);

//Ingenieur
JMenu menuIngenieur = new JMene("Ingenieur");
mainMenu.add(menuIngenieur);
JMenuItem trois = new JMenuItem("3");
JMenuItem quatre = new JMenuItem("4");
menuIngenieur.add(trois);
menuIngenieur.add(quatre);

//Client
JMenu menuClient = new JMenu("Client");
mainMenu.add(menuClient);
JMenuItem cinq = new JMenuItem("5");
JMenuItem six = new JMenuItem("6");
menuClient.add(cinq);
menuClient.add(six);

mainFrame.setJMenuBar(mainMenu);
mainFrame.setVisible(true);
mainFrame.setSize(1000,700);
}
}
A voir également:

7 réponses

Utilisateur anonyme
18 avril 2007 à 15:56
Salut!

Je ne pense pas que ce soit possible sen utilisant la méthode JFrmae.setJMenubar() et sans surcharger JFrame.

Par contre, tu peux placer ta JMenuBar à gauche dans un BorderLayout par exemple en utilisant la méthode add() de ta JFrame.

Vois ci-dessous:

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.GridLayout;

import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;

/*
 * Created on 18-avr.-2007
 * Author: HackTrack
 */

public class VerticalMenu extends JFrame {
	private Container c;

	public VerticalMenu() {
		super("Demo vertical menu");
		initializeFrame();
	}

	private void initializeFrame() {
		c = getContentPane();
		c.setLayout(new BorderLayout());
		JMenuBar menubar = new JMenuBar();
		menubar.setLayout(new GridLayout(3,1));
		JMenu menu1 = new JMenu("Menu 1");
		menu1.add(new JMenuItem("Submenu A"));
		menu1.add(new JMenuItem("Submenu B"));
		menu1.add(new JMenuItem("Submenu C"));
		menubar.add(menu1);
		menubar.add(new JMenu("Menu 2"));
		menubar.add(new JMenu("Menu 3"));
		c.add(menubar, BorderLayout.WEST);
	}

	public static void main(String[] args) {
		VerticalMenu demo = new VerticalMenu();
		demo.pack();
		demo.setVisible(true);
	}

}



;-)
HackTrack
3
Je te remercie pour ta reponse et pour tes conseils , en fait mon inquiétude de ce matin etait de mettre le menu en vertical et non en horizontal.
Comme tu l'as deviné je suis novice en java swing.

j'ai placé une action , j'aimerai en fait lorsque j'appuie sur l'item un que le panelUn s'affiche et que les autres panels de la Jframe ne s'affichent pas.

J'ai codé ceci :

class un implements ActionListener {

private JPanel P1;
private JPanel P2;
private JPanel P3;
private JPanel P4;
private JPanel P5;
private JPanel P6;

public un (JPanel PanelUn, JPanel PanelDeux, JPanel PanelTrois, JPanel PanelQuatre,JPanel PanelCinq, JPanel PanelSix)
{
P1 = PanelUn;
P2=PanelDeux;
P3= PanelTrois;
P4=PanelQuatre;
P5=PanelCinq;
P6=PanelSix;
}

public void actionPerformed(ActionEvent e) {
PanelUn.setVisible(true);
PanelDeux.setVisible(false);
PanelTrois.setVisible(false);
PanelQuatre.setVisible(false);
PanelCinq.setVisible(false);
PanelSix.setVisible(false);

}




Te remercie pour ton temps !!!
Schott
1
Utilisateur anonyme
19 avril 2007 à 22:22
Je regarde ça demain

;-)
HackTrack
1
J'ai adapté votre code :

Si déjà des problèmes arrivent a ce niveau, cela promet pour la suite, sauf si vous débutez dans le domaine de la programmation.

Dans un menu, il faudra placer les actions... bon courage

Prochainement on parlera d'optimalisation du code...

Autre remarque, la méthode size a disparu, il sera plus facile d'utiliser des "Layout" pour disposer vos JComponent.
pack fera tout pour vous, si vous avez bien iniatilisé vos composants.
==============================
package commentFaire;

import javax.swing.*;

public class MenuVertical {


public static void main(String[] args) {

JFrame mainFrame = new JFrame();

// Menu General
JMenuBar mainMenu = new JMenuBar();
JMenu jMenuVertical = new JMenu("Vertical");
mainMenu.add(jMenuVertical);

// Projet
JMenu menuProjet = new JMenu("Projet");
jMenuVertical.add(menuProjet);
JMenuItem un = new JMenuItem("1");
JMenuItem deux = new JMenuItem("2");
menuProjet.add(un);
menuProjet.add(deux);

// Ingenieur
JMenu menuIngenieur = new JMenu("Ingenieur");
jMenuVertical.add(menuIngenieur);
JMenuItem trois = new JMenuItem("3");
JMenuItem quatre = new JMenuItem("4");
menuIngenieur.add(trois);
menuIngenieur.add(quatre);

// Client
JMenu menuClient = new JMenu("Client");
jMenuVertical.add(menuClient);
JMenuItem cinq = new JMenuItem("5");
JMenuItem six = new JMenuItem("6");
menuClient.add(cinq);
menuClient.add(six);

mainFrame.setJMenuBar(mainMenu);
mainFrame.pack();
mainFrame.setVisible(true);

}


}
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
En fait,quand je te disais un menu vertical c'était l'orientation du menu que j'aimerais vetical, car en effet quand je crée un menu il a toujours une orientation horizontale par défaut.

J'aimerais réaliser un menu qui ressemble un peu à ca :

Par exemple: un menu avec des items , Forum ,Tutoriaux et Login et lorsque l'on clique sur l'item Login ses enfants s'ouvrent donc Connecter et Déconnecter.



Forum
Tutoriaux
Login -> Connecter
-> Déconnecter


Je te remercie davance !!!
schott
0
Je te remercie je testerai ca ce soir !!!

J'ai placé une action sur un item du menu , j'aimerai en fait lorsque j'appuie sur l'item un que le panelUn s'affiche et que les autres panels de la Jframe ne s'affichent pas Est ce possible ?

J'ai ecrit ce que j'ai tappé dans la classe action sur la deuxieme reponse (plus haut)
je te remercie !!!
Schott
0
Merci !!
0