我想创建一个工具栏在我的应用程序。如果你按一下按钮在那工具条,它会弹出一个菜单,只是喜欢在日食的工具栏。我不知道如何做到这一点,在摇摆。有人可以帮我吗?我已经试过谷歌却发现什么。

有帮助吗?

解决方案

这是在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);
    }
}

其他提示

我不明白为什么这是难度比它必须是为什么你应该使用的MouseListener。由史蒂夫·麦克劳德解决方案的工作,但菜单的显示位置取决于鼠标点击的位置。为什么不使用如通常用于一个JButton一个ActionListener。这似乎既不较硬也不少努力。

final JPopupMenu menu = new JPopupMenu();
menu.add(...whatever...);

final JButton button = new JButton();
button.setText("My Menu");
button.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent ev) {
        menu.show(button, button.getBounds().x, button.getBounds().y
           + button.getBounds().height);
    }
});

此位置大约相同的作为用于我的JMenuBar菜单的菜单,以及该位置是一致的。你可以通过修改menu.show x和y()不同地放置。

我认为这是与在AWT。

您应该把那个按钮的ActionCommand当它的执行显示弹出菜单根据鼠标的坐标。

看见的部分 带来了一个菜单, 在 如何使用的菜单.

我不知道我理解正确,但如果你想知道如何在旋启式止回阀工具栏这个

Java教程:如何使用工具栏并且这

Java教程:如何使用操作

下面是一个简单的和漂亮的类

“在这里输入的图像描述”

import javax.swing.JPopupMenu;
import javax.swing.JToggleButton;
import javax.swing.event.PopupMenuEvent;
import javax.swing.event.PopupMenuListener;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

public class MenuButton extends JToggleButton {

    JPopupMenu popup;

    public MenuButton(String name, JPopupMenu menu) {
        super(name);
        this.popup = menu;
        addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent ev) {
                JToggleButton b = MenuButton.this;
                if (b.isSelected()) {
                    popup.show(b, 0, b.getBounds().height);
                } else {
                    popup.setVisible(false);
                }
            }
        });
        popup.addPopupMenuListener(new PopupMenuListener() {
            @Override
            public void popupMenuWillBecomeVisible(PopupMenuEvent e) {}
            @Override
            public void popupMenuWillBecomeInvisible(PopupMenuEvent e) {
                MenuButton.this.setSelected(false);
            }
            @Override
            public void popupMenuCanceled(PopupMenuEvent e) {}
        });
    }
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top