解决方案 »

  1.   


    import java.awt.*;
    import java.awt.event.*;
    import java.awt.geom.*;
    import java.awt.image.*;
    import javax.swing.*;public class JImagedPopupMenu extends JPopupMenu {
        private static final long serialVersionUID = 1L;
        private Font              font             = new Font("Dialog", Font.BOLD,
                                                           13);
        private ImageIcon         imageIcon        = null;    public JImagedPopupMenu(ImageIcon imageIcon) {
            this.imageIcon = imageIcon;
        }    public JImagedPopupMenu(String text) {
            this.imageIcon = createImage(text);
        }    private ImageIcon createImage(String text) {
            BufferedImage bi = new BufferedImage(30, 1000,
                    BufferedImage.TYPE_INT_ARGB);
            ImageIcon image = new ImageIcon(bi);
            Graphics2D g2d = bi.createGraphics();        GradientPaint paint = new GradientPaint(0, 0, Color.yellow, 30, 10,
                    Color.red, true);
            g2d.setPaint(paint);        g2d.fillRect(0, 0, bi.getWidth(), bi.getHeight());        AffineTransform at = new AffineTransform();
            at.rotate(-Math.PI / 2);        g2d.setTransform(at);
            g2d.setColor(Color.white);
            g2d.setFont(font);
            g2d.drawString(text, -180, bi.getWidth() / 2);        return image;
        }    @Override
        public Insets getInsets() {
            Insets insets = (Insets) super.getInsets().clone();
            insets.left += imageIcon.getIconWidth();
            return insets;
        }    @Override
        public void paint(Graphics g) {
            super.paint(g);
            if (imageIcon != null) {
                Insets insets = getInsets();
                g.drawImage(imageIcon.getImage(),
                        insets.left - imageIcon.getIconWidth(), insets.top, null);
            }
        }    public static void main(String[] args) {
            final JFrame frame = new JFrame();
            frame.setSize(600, 500);
            frame.setTitle("ImageMenu");
            final JImagedPopupMenu menu = new JImagedPopupMenu(
                    "Windows XP Perfessional");
            menu.add(new JMenuItem("Winzip 8.0"));
            menu.addSeparator();
            menu.add(new JMenuItem("Programs"));
            menu.add(new JMenuItem("Document"));
            menu.add(new JMenuItem("Settings"));
            menu.add(new JMenuItem("Search"));
            menu.add(new JMenuItem("Help and Support"));
            menu.add(new JMenuItem("Run..."));
            menu.addSeparator();
            menu.add(new JMenuItem("Shut Down..."));
            JLabel label = new JLabel("Right click me to show image popup menu.");
            label.addMouseListener(new java.awt.event.MouseAdapter() {
                public void mouseReleased(MouseEvent e) {
                    if (e.isPopupTrigger()) {
                        menu.show(frame, e.getPoint().x, e.getPoint().y);
                    }
                }
            });
            frame.getContentPane().add(label, BorderLayout.CENTER);
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setVisible(true);
        }
    }
      

  2.   

    小代码,你看下package csdn;import java.awt.MenuItem;
    import java.awt.PopupMenu;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.InputEvent;
    import java.awt.event.MouseAdapter;
    import java.awt.event.MouseEvent;import javax.swing.JFrame;
    import javax.swing.JPanel;public class MyPanel extends JPanel { private static final long serialVersionUID = -4222714206362916660L; PopupMenu popupMenu1 = new PopupMenu();
    MenuItem menuItem1 = new MenuItem();
    MenuItem menuItem2 = new MenuItem();
    MenuItem menuItem3 = new MenuItem(); public MyPanel() {
    this.setLayout(null);
    menuItem1.setLabel("menu1");
    menuItem2.setLabel("menu2");
    menuItem3.setLabel("menu3");
    menuItem1.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    menuItem1_actionPerformed(e);
    }
    });
    menuItem2.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    menuItem1_actionPerformed(e);
    }
    });
    menuItem3.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    menuItem1_actionPerformed(e);
    }
    });
    this.addMouseListener(new MouseAdapter() {
    public void mousePressed(MouseEvent e) {
    this_mousePressed(e);
    }
    });
    popupMenu1.add(menuItem1);
    popupMenu1.add(menuItem2);
    popupMenu1.add(menuItem3);
    this.add(popupMenu1);
    } void this_mousePressed(MouseEvent e) {
    int mods = e.getModifiers();
    // 鼠标右键
    if ((mods & InputEvent.BUTTON3_MASK) != 0) {
    // 弹出菜单
    popupMenu1.show(this, e.getX(), e.getY());
    }
    } void menuItem1_actionPerformed(ActionEvent e) {
    // 菜单事件
    System.out.println("1111111111");
    } public static void main(String[] args) {
    JFrame frame = new JFrame();
    frame.add(new MyPanel());
    frame.setSize(300, 300);
    frame.setLocationRelativeTo(null);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setVisible(true);
    }
    }