swing JPopupMenu 单击按钮弹出 例子下载
swing JPopupMenu 单击按钮弹出 例子下载
import java.awt.BorderLayout;import java.awt.Dimension;import java.awt.FlowLayout;import java.awt.event.MouseAdapter;import java.awt.event.MouseEvent;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JMenuItem;import javax.swing.JPanel;import javax.swing.JPopupMenu;import javax.swing.SwingUtilities;import javax.swing.UIManager;public class Main { public static void main(String[] argv) throws Exception { final JPopupMenu menu = new JPopupMenu(); JMenuItem item = new JMenuItem("Item Label"); menu.add(item); final JButton component = new JButton("button"); component.addMouseListener(new MouseAdapter() { public void mousePressed(MouseEvent e) { if (SwingUtilities.isLeftMouseButton(e)) { menu.show(e.getComponent(), Math.round(component.getAlignmentX()) - 15, Math.round(component.getAlignmentY()) + 20); } } public void mouseReleased(MouseEvent evt) { if (evt.isPopupTrigger()) { //menu.show(evt.getComponent(), evt.getX(), evt.getY()); } } }); SwingUtilities.invokeLater(new Runnable() { public void run() { try { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); } catch (Exception e) { e.printStackTrace(); } JFrame frame = new JFrame("测试"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(new Dimension(800, 600)); frame.setLocationRelativeTo(null); final JPanel mainPanel = new JPanel(new BorderLayout()); JPanel topPanel = new JPanel(new FlowLayout(FlowLayout.RIGHT, 0, 0)); topPanel.add(component); mainPanel.add(topPanel, BorderLayout.NORTH); frame.getContentPane().setLayout(new BorderLayout()); frame.getContentPane().add(mainPanel); frame.setVisible(true); } }); }}