Action sur les JMenu

Fermé
soukayna - 6 nov. 2012 à 12:59
 Utilisateur anonyme - 10 nov. 2012 à 07:52
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

Utilisateur anonyme
10 nov. 2012 à 07:52
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);
	}
}

0