Partage
  • Partager sur Facebook
  • Partager sur Twitter

un menu contextuel !

    22 octobre 2010 à 15:18:36

    Bonjour, quelqu'un sait il comment réaliser un menu contextuel en JAVA avec SWT ??
    j'ai essayé mais ça fonctionne pas le menu n'affiche pas si je clic droit sur la souris

    voila le code
    import javax.swing.SwingUtilities;
    import javax.swing.AbstractAction;
    import javax.swing.ImageIcon;
    import javax.swing.JPanel;
    import javax.swing.JFrame;
    import javax.swing.JMenuBar;
    import javax.swing.KeyStroke;
    import java.awt.Rectangle;
    import java.awt.event.*;
    import javax.swing.JPopupMenu;
    import javax.swing.JTextField;
    
    public class teste extends JFrame {
    private Actions actionEnregistrer = new Actions("Enregistrer", 'W', "Sauvegarder le texte");
    private Actions actionCouper = new Actions("Couper", 'X', "Enlever le texte sélectionné"); // @jve:decl-index=0:
    private Actions actionCopier = new Actions("Copier", 'C', "Copier le texte sélectionné");
    private Actions actionColler = new Actions("Coller", 'V', "Coller le texte à l'endroit du curseur");
    
    private static final long serialVersionUID = 1L;
    
    private JPanel jContentPane = null;
    
    private JMenuBar jJMenuBar = null;
    private JPopupMenu jPopupMenu = null; // @jve:decl-index=0:visual-constraint="94,78"
    private JTextField jTextField = null;
    
    
    private JMenuBar getJJMenuBar() {
    if (jJMenuBar == null) {
    jJMenuBar = new JMenuBar();
    }
    return jJMenuBar;
    }
    
    
    private JPopupMenu getJPopupMenu() {
    if (jPopupMenu == null) {
    jPopupMenu = new JPopupMenu();
    jPopupMenu .add(actionEnregistrer);
    jPopupMenu .addSeparator();
    jPopupMenu .add(actionCopier);
    jPopupMenu .add(actionColler);
    }
    return jPopupMenu;
    }
    
    
    private JTextField getJTextField() {
    if (jTextField == null) {
    jTextField = new JTextField();
    jTextField.setComponentPopupMenu(jPopupMenu);
    jTextField.setBounds(new Rectangle(114, 45, 118, 42));
    }
    return jTextField;
    }
    
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    SwingUtilities.invokeLater(new Runnable() {
    public void run() {
    teste thisClass = new teste();
    thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    thisClass.setVisible(true);
    }
    });
    }
    
    
    public teste() {
    super();
    initialize();
    }
    
    
    private void initialize() {
    this.setSize(300, 200);
    this.setJMenuBar(getJJMenuBar());
    this.setContentPane(getJContentPane());
    this.setTitle("JFrame");
    }
    
    
    private JPanel getJContentPane() {
    if (jContentPane == null) {
    jContentPane = new JPanel();
    jContentPane.setLayout(null);
    jContentPane.add(getJTextField(), null);
    
    }
    return jContentPane;
    }
    private class Actions extends AbstractAction {
    private String méthode;
    
    public Actions(String libellé, char raccourci, String description) {
    super(libellé, new ImageIcon(libellé.toLowerCase()+".gif"));
    putValue(SHORT_DESCRIPTION, description);
    putValue(ACCELERATOR_KEY, KeyStroke.getKeyStroke("control "+raccourci));
    }
    
    public void actionPerformed(ActionEvent e) {
    try {
    
    }
    catch (Exception ex) { teste.this.setTitle("Problème");}
    
    }
    private void couper() {jTextField.cut(); }
    private void copier() { jTextField.copy(); }
    private void coller() { jTextField.paste(); }
    }
    }
    


    merci d'avance
    • Partager sur Facebook
    • Partager sur Twitter
      22 octobre 2010 à 17:06:41

      Pour afficher une JPopupmenu tu dois faire mapopup.show();
      • Partager sur Facebook
      • Partager sur Twitter
      J'ai tous les badges d'OpenClassrooms.
        22 octobre 2010 à 19:50:20

        voila je veux faire les actions sur un jtextfield sélectionné , j'au deux jtextfield et jtextfield1

        si je pointe curseur sur jtextfield un et clické sur coller()

        car je n'arrive pas à faire ça
        private JPopupMenu getJPopupMenu() {
        if (jPopupMenu == null) {
        jPopupMenu = new JPopupMenu();
        jPopupMenu.add(new Option("Couper", 'X', "Enlève le texte")).addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
        int dotPosition = jTextField.getCaretPosition();
        jTextField.getX();
        System.out.println(" ffff "+ jTextField.getX());

        System.out.println(" rachid "+jTextField1.getX());
        if (jTextField.getX()==90){
        System.out.println(" david ");
        jTextField.cut();
        }
        else if (e.getSource().equals(jTextField1)){
        jTextField1.cut();
        }
        }
        • Partager sur Facebook
        • Partager sur Twitter

        un 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