Partage
  • Partager sur Facebook
  • Partager sur Twitter

Menu contextuel

Il ne fonctionne pas... normal ?

Sujet résolu
    19 février 2009 à 13:11:30

    Je peux pas vraiment expliquer mon problème autrement qu'en disant que mon menu contextuel ne fonctionne pas, il ne s'affiche pas... Voici le code :

    import javax.swing.*;
    import javax.swing.text.JTextComponent;
    import java.util.*;
    import java.awt.*;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.KeyEvent;
    import java.awt.event.MouseAdapter;
    import java.awt.event.MouseEvent;
    
    
    public class Fenetre extends JFrame {
    	
    	private static JTextPane texte = new JTextPane();
    
    	private static JPanel container = new JPanel();
    	private static JPanel boutongrp = new JPanel();
    	
    	private static JButton bouton_crypt = new JButton("Crypter");
    	
    	private JMenuBar menuBar = new JMenuBar();
    	private JMenu Fichier1 = new JMenu("Fichier");
    	private JMenu Edition1 = new JMenu("Edition");
    	private JMenu A_propos = new JMenu("À propos");
    	
    	//                 Menu contextuel 
    	// ***********************************************
    
    	 private JPopupMenu Clic_droit = new JPopupMenu();
    	 private JMenu Modifier_police = new JMenu("Modifier la police");
    	 private JMenu Tester = new JMenu("Tester le cryptage");
    	 
    	 private JMenuItem police_1 = new JMenuItem("Arial");
    	 private JMenuItem police_2 = new JMenuItem("Comic Sans MS");
    	 private JMenuItem police_3 = new JMenuItem("Trebuchet MS");
    	 private JMenuItem lucida_petite = new JMenuItem("Petit");
    	 private JMenuItem lucida_grande = new JMenuItem("Grand");
    	 
    	 private JMenu police_4 = new JMenu("Lucida");
    	 
    	 //***********************************************
    	 
    	 
    	
    	private JMenuItem Ouvrir = new JMenuItem("Ouvrir");
    	private JMenuItem pt_inter = new JMenuItem("À propos");
    	private JMenuItem Quitter = new JMenuItem("Quitter");
    	
    	public Fenetre() {
    		
    		this.setSize(500,500);
    		this.setTitle("JTextArea");
    		this.setResizable(false);
    		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    	    this.setLocationRelativeTo(null);
    	    
    	//*********************************************************
    		
    		container.addMouseListener(new MouseAdapter(){
            	public void mouseReleased(MouseEvent event){
    
    		if(event.isPopupTrigger()) {	            		
         		police_4.add(lucida_grande);
         		police_4.add(lucida_petite);
         		Modifier_police.add(police_1);
         		Modifier_police.add(police_2);
         		Modifier_police.add(police_3);
         		Modifier_police.add(police_4);
         		
         		Clic_droit.add(Tester);
         		Clic_droit.add(Modifier_police);
         	
         		//La méthode qui va afficher le menu
         		Clic_droit.show(container, event.getX(), event.getY());
     		}
            	}
    		});
     	
         //************************************************************
    	    
    			JPanel top = new JPanel();
    		
    		  Font police = new Font("Arial", Font.PLAIN, 12);
    	        texte.setFont(police);
    	        texte.setPreferredSize(new Dimension(400, 400));
    	        texte.setForeground(Color.BLACK);
    	      
    	        texte.setText("blablablabla");
    	        
    		top.add(texte);
    		boutongrp.add(bouton_crypt);
    				
    		// container.setBackground(Color.gray);
    		container.setLayout(new BorderLayout());
    		container.add(top, BorderLayout.NORTH);
    		container.add(boutongrp, BorderLayout.SOUTH);
    		
    		Ouvrir.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,
                    KeyEvent.META_MASK));
    
    		Fichier1.add(Ouvrir);
    		Quitter.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Q,
                    KeyEvent.META_MASK));
    		Fichier1.add(Quitter);
    		Quitter.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent arg0) {
    				System.exit(0);
    			}
    		});
    		pt_inter.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_I, KeyEvent.META_MASK));
    		A_propos.add(pt_inter);
    		pt_inter.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent arg0) {
    				JOptionPane fen_a_propos_pop = new JOptionPane();
    				String mess = "bbbbbllllllllll. \n";
    				mess+= "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa \n";
    				mess+= "blaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa \n";
    				mess+= "blablabla ©";
    				ImageIcon img = new ImageIcon("images/logo_top.gif");
    				
    				fen_a_propos_pop.showMessageDialog(null, mess, "À propos", JOptionPane.INFORMATION_MESSAGE, img);
    			}
    		});
    		
    	
    		
    		Fichier1.setMnemonic('F');
    		menuBar.add(Fichier1);
    	    Edition1.setMnemonic('E');
    		menuBar.add(Edition1);
    		A_propos.setMnemonic('P'); 
    		menuBar.add(A_propos);
    		
    		container.setBackground(Color.BLUE);
    		this.setContentPane(container);
    		
    		this.setJMenuBar(menuBar);
    		this.setVisible(true);
    		
    	}
    
    }
    
    • Partager sur Facebook
    • Partager sur Twitter
      19 février 2009 à 13:21:12

      Chez moi il s'affiche...

      Mais il doit pas s'afficher là où tu veux.
      • Partager sur Facebook
      • Partager sur Twitter
        19 février 2009 à 13:23:07

        Je suis sur mac, j'ai une souris mighty mouse, c'est peut-être ça le pb ? J'ai mit le container en blue pour qu'on puisse bien cliquer sur le container afin de voir si y'a problème ou non... J'ai aussi essayé de cliquer avec Ctrl + clic gauche ce qui revient à faire clic droit, mais ça ne marche pas nomplus... d'où ça vient?
        • Partager sur Facebook
        • Partager sur Twitter
          19 février 2009 à 13:27:53

          Qu'on se mette d'accord :
          Tu veux que ton JPopMenu s'affiche lors d'un clic droit sur la fenêtre en dehors du JTextPane ?
          • Partager sur Facebook
          • Partager sur Twitter
            19 février 2009 à 13:31:43

            Bon ben si t'es sûr, je ne vois pas d'où ça vient...
            Java est conçu pour être portable donc j'imagine que la méthode mouseReleased marche comme il faut.
            Elle a quoi de spécial ta souris ? Y'a plus de 3 boutons ?
            • Partager sur Facebook
            • Partager sur Twitter
              19 février 2009 à 13:33:46

              Y'en a 4, c'est la derniere mighty mouse d'apple avec fil, attends, j'ai aussi essayé avec ma souris à trois boutons et ça ne marche pas nomplus :/.
              • Partager sur Facebook
              • Partager sur Twitter
                19 février 2009 à 14:24:20

                Moi ce n'est pas qu'il ne s'affiche pas mais pas à l'endroit que j'attendais, je trouves qu'il s'affiche un peu trop bas et trop à droite par rapport à l'endroit ou l'on effectue le clic droit sur la fenêtre.
                • Partager sur Facebook
                • Partager sur Twitter
                  19 février 2009 à 14:26:50

                  Comme elmh ça marche pour moi.
                  • Partager sur Facebook
                  • Partager sur Twitter
                    19 février 2009 à 14:28:37

                    Etrange... d'où ça pourrait venir... :/ Edit, j'ai essayé avec : if(event.getButton() == MouseEvent.BUTTON3) et ça marche, merci à vous, problème résolu ;).
                    • Partager sur Facebook
                    • Partager sur Twitter

                    Menu contextuel

                    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                    • Editeur
                    • Markdown