java - 如何创建带有菜单的 JButton?

标签 java swing menu jbutton jpopupmenu

我想在我的应用程序中创建一个工具栏。如果单击该工具栏上的按钮,它将弹出一个菜单,就像在 Eclipse 的工具栏中一样。我不知道如何在 Swing 中做到这一点。有人能帮助我吗?我试过谷歌但一无所获。

最佳答案

这在 Swing 中比它需要的要困难得多。因此,我没有将您指向教程,而是创建了一个完整的工作示例。

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

public class ToolbarDemo {

    public static void main(String[] args) {
        final JFrame frame = new JFrame();
        frame.setPreferredSize(new Dimension(600, 400));
        final JToolBar toolBar = new JToolBar();

        //Create the popup menu.
        final JPopupMenu popup = new JPopupMenu();
        popup.add(new JMenuItem(new AbstractAction("Option 1") {
            public void actionPerformed(ActionEvent e) {
                JOptionPane.showMessageDialog(frame, "Option 1 selected");
            }
        }));
        popup.add(new JMenuItem(new AbstractAction("Option 2") {
            public void actionPerformed(ActionEvent e) {
                JOptionPane.showMessageDialog(frame, "Option 2 selected");
            }
        }));

        final JButton button = new JButton("Options");
        button.addMouseListener(new MouseAdapter() {
            public void mousePressed(MouseEvent e) {
                popup.show(e.getComponent(), e.getX(), e.getY());
            }
        });
        toolBar.add(button);

        frame.getContentPane().add(toolBar, BorderLayout.NORTH);
        frame.pack();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
    }
}

关于java - 如何创建带有菜单的 JButton?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1692677/

相关文章:

java - 2 java.util.Date 之间的月数,不包括月中的第几天

java - JAXB:解码期间拦截?

java - 如何在适配器类中制作JTable并在主类中调用它

c++ - 我第二次使用 Cin.get() 时不工作

java - Java 中的 Application.DoEvents() 等效吗?

java - Apache Camel : async operation and backpressure

java - 如何每秒将图像绘制到帧上?

java - 等待 SwingWorker 完成

javascript - CSS/Javascript 菜单的第 3 级

css - 仅在一台计算机上的每个浏览器中的菜单上的额外填充