Action sur les JMenu

soukayna -  
 Utilisateur anonyme -
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

  1. Utilisateur anonyme
     
    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