怎样做到左键点击控件出现弹出菜单

解决方案 »

  1.   

    在鼠标事件里面用JPopupMenu实现菜单显示.
      

  2.   

    package com.sysdynamic.test;import java.awt.BorderLayout;
    import java.awt.Component;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseListener;import javax.swing.JButton;
    import javax.swing.JMenuItem;
    import javax.swing.JOptionPane;
    import javax.swing.JPanel;
    import javax.swing.JPopupMenu;import javax.swing.WindowConstants;
    import javax.swing.SwingUtilities;public class EventTest extends javax.swing.JFrame {
    private JPanel MainJPanel;
    private JButton btnName;
    private JButton btnAge;
    private JButton btnSex; public static void main(String[] args) {
    SwingUtilities.invokeLater(new Runnable() {
    public void run() {
    EventTest inst = new EventTest();
    inst.setLocationRelativeTo(null);
    inst.setVisible(true);
    }
    });
    } public EventTest() {
    super();
    initGUI();
    } private void initGUI() {
    try {
    setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); MainJPanel = new JPanel();
    getContentPane().add(MainJPanel, BorderLayout.CENTER); btnName = new JButton();
    MainJPanel.add(btnName);
    btnName.setText("Name");

    btnName.setToolTipText("右击我弹出菜单!"); btnName.addMouseListener(new MyMouseListener(btnName));  //右击菜单 btnSex = new JButton();
    MainJPanel.add(btnSex);
    btnSex.setText("Sex"); btnAge = new JButton();
    MainJPanel.add(btnAge);
    btnAge.setText("Age"); btnAge.addActionListener(new myActionListener(btnAge));
    btnName.addActionListener(new myActionListener(btnName));
    btnSex.addActionListener(new myActionListener(btnSex)); pack();
    setSize(400, 300);
    } catch (Exception e) {
    e.printStackTrace();
    }
    }}//右击菜单
    class MyMouseListener implements MouseListener { Component component;

    public MyMouseListener(){

    }
    public MyMouseListener(Component component) {
    this.component = component;
    }

    @Override
    public void mouseClicked(MouseEvent e) { if(e.getButton()==3){
    JPopupMenu jPopupMenu=new JPopupMenu();
    JMenuItem add=new JMenuItem("Add");
    JMenuItem update=new JMenuItem("Update");
    JMenuItem delete=new JMenuItem("Delete");
    JMenuItem query=new JMenuItem("Query");
    jPopupMenu.add(add);
    jPopupMenu.add(update);
    jPopupMenu.add(delete);
    jPopupMenu.add(query);
    jPopupMenu.show(component, e.getX(), e.getY());
    }

    } @Override
    public void mouseEntered(MouseEvent e) { } @Override
    public void mouseExited(MouseEvent e) { } @Override
    public void mousePressed(MouseEvent e) { } @Override
    public void mouseReleased(MouseEvent e) { }}class myActionListener implements ActionListener { Component component; public myActionListener() { } public myActionListener(Component component) {
    this.component = component;
    } public void actionPerformed(ActionEvent e) { JOptionPane.showMessageDialog(null, ((JButton) component).getText()
    .toString());
    }}
      

  3.   

    问题已经解决了 谢谢大家的关注 如果有疑问的该我留言吧 大家一起讨论啊bfunction.addMouseListener(new MouseAdapter()
            {
        //private JPopupMenu popup = new JPopupMenu();
                public void MouseClicked(MouseEvent e)
                {
                    add(popup);//添加弹出菜单
                    showPopup(e);
                }            public void mousePressed(MouseEvent e)
                {
                    showPopup(e);
                }            public void mouseClicked(MouseEvent e)
                {
                    showPopup(e);
                }            public void mouseReleased(MouseEvent e)
                {
                    showPopup(e);
                }            public void showPopup(MouseEvent e6)
                {
                 //设定菜单项的显示方式
            });