我想在JList的每一个选项上加右键弹出式菜单,不知行不行(纯属个人想法),如可以,请详细讲解如何加?

解决方案 »

  1.   

    import java.awt.BorderLayout;
    import java.awt.event.MouseAdapter;
    import java.awt.event.MouseEvent;import javax.swing.*;public class T {
    public static void main(String[] args) {
    try {
    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
    } catch (Exception e) {
    e.printStackTrace();
    } final JList list = new JList(new String[] {"Item-1", "Item-2", "Item-3", "Item-4", "Item-5"});
    JScrollPane sp = new JScrollPane(list);

    final JPopupMenu popupMenu = new JPopupMenu();
    popupMenu.add(new JMenuItem("MenuItem-1"));
    popupMenu.add(new JMenuItem("MenuItem-2"));
    popupMenu.add(new JMenuItem("MenuItem-3"));
    popupMenu.add(new JMenuItem("MenuItem-4"));

    list.addMouseListener(new MouseAdapter() {
    public void mouseReleased(MouseEvent e) {
    if (e.getButton() == MouseEvent.BUTTON3) {
    int index = list.locationToIndex(e.getPoint());
    if (index >= 0) {
    list.setSelectedIndex(index);
    popupMenu.show(list, e.getX(), e.getY());
    }
    }
    }
    });

    JFrame f = new JFrame();
    f.getContentPane().add(sp, BorderLayout.CENTER);
    f.pack();
    f.setLocationRelativeTo(null);
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    f.setVisible(true);
    }
    }