Action sur les JMenu [Fermé]

Signaler
-
Messages postés
623
Date d'inscription
vendredi 26 juillet 2002
Statut
Membre
Dernière intervention
11 novembre 2012
-
Bonjour,

Svp j'ai besoin de savoir comment peut on faire des actions sue les JMenu parce que normalent les actions se font sur les jmenuIteam (les ActionListener).Cordialement

1 réponse

Messages postés
623
Date d'inscription
vendredi 26 juillet 2002
Statut
Membre
Dernière intervention
11 novembre 2012
967
Salut!

Le principe même d'un menu est que c'est un conteneur qui contient une collection de JMenu et/ou de JMenuItem.

Il est donc normal que l'on ne puisse par défaut pas implémenter d'action sur un menu.

Mais tu peux tout à fait ajouter directement un JMenuItem sur une JMenubar.

Exemple:

package hacktrack.jmenuaction;

import java.awt.Container;
import java.awt.event.ActionEvent;

import javax.swing.AbstractAction;
import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JTextArea;

public class JMenuActionDemo extends JFrame {

	private Container c;
	private JTextArea display;

	public JMenuActionDemo() {
		super("Demo - Action on JMenu - HackTrack");
		this.init();
	}

	@SuppressWarnings("serial")
	private void init() {
		c = getContentPane();
		JPanel outputPanel = new JPanel();
		outputPanel.setBorder(BorderFactory
				.createTitledBorder("Affichage des actions"));
		display = new JTextArea(10, 40);
		outputPanel.add(display);
		c.add(outputPanel);

		JMenuBar menubar = new JMenuBar();
		
		menubar.add(new JMenuItem(new SelectAllAction()));
		
		JMenu additionalActionsMenu = new JMenu("Autres actions...");
		JMenuItem tabMenu = new JMenuItem(new TabAction());
		additionalActionsMenu.add(tabMenu);
		JMenuItem lineFeedMenu = new JMenuItem(new LineFeedAction());
		additionalActionsMenu.add(lineFeedMenu);
		menubar.add(additionalActionsMenu);
		
		this.setJMenuBar(menubar);
	}
	
	class AddSignatureAction extends AbstractAction {		
		protected AddSignatureAction(){
			super("Autres actions...");
		}
		
		@Override
		public void actionPerformed(ActionEvent e) {
			display.append("Signed: Hacktrack");
		}
	}
	
	class TabAction extends AbstractAction {		
		protected TabAction(){
			super("Tabulation");
		}
		
		@Override
		public void actionPerformed(ActionEvent e) {
			display.append("\t");
		}
	}
	
	class LineFeedAction extends AbstractAction {		
		protected LineFeedAction(){
			super("Aller à la ligne");
		}
		
		@Override
		public void actionPerformed(ActionEvent e) {
			display.append("\n");
		}
	}
	
	class SelectAllAction extends AbstractAction {		
		protected SelectAllAction(){
			super("Sélectionner tout");
		}
		
		@Override
		public void actionPerformed(ActionEvent e) {
			display.select(0, display.getText().length());
		}
	}

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