首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >向JPanel添加JPopupMenu

向JPanel添加JPopupMenu
EN

Stack Overflow用户
提问于 2012-05-28 22:10:25
回答 3查看 12.5K关注 0票数 4

我的代码:

代码语言:javascript
复制
class PanelGlowny extends JPanel implements ActionListener{}

public class Formatka extends JFrame implements ActionListener{

private JMenuItem klienciMenuItem = new JMenuItem("Klienci");
private JPopupMenu menuPopup = new JPopupMenu();
private PanelGlowny panelGlowny = new PanelGlowny();


public Formatka() {

    add(panelGlowny, BorderLayout.CENTER);
    menuPopup.add(klienciMenuItem);
    panelGlowny.setComponentPopupMenu(menuPopup);


   }
}

当我点击鼠标右键时,我看不到弹出菜单。为什么?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-05-28 23:41:56

在添加到JPanel时对我有效。

代码语言:javascript
复制
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JPopupMenu;

public class Formatka extends JPanel {

    private JMenuItem klienciMenuItem = new JMenuItem("Klienci");
    private JPopupMenu menuPopup = new JPopupMenu();

    public Formatka() {
        this.add(new JLabel("Right-click for popup menu."));
        menuPopup.add(klienciMenuItem);
        this.setComponentPopupMenu(menuPopup);
    }

    private void display() {
        JFrame f = new JFrame("Formatka");
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.add(this);
        f.pack();
        f.setLocationRelativeTo(null);
        f.setVisible(true);
    }

    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {

            @Override
            public void run() {
                new Formatka().display();
            }
        });
    }
}
票数 8
EN

Stack Overflow用户

发布于 2012-05-28 22:14:49

您未设置布局,因此该组件可能未添加到JFrame。使用setLayout(new BorderLayout());将布局设置为JFrame。

票数 2
EN

Stack Overflow用户

发布于 2014-02-03 00:35:51

这适用于JFrame :D

代码语言:javascript
复制
    import java.awt.event.MouseAdapter;
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseListener;
    import javax.swing.JMenuItem;
    import javax.swing.JPopupMenu;
    import javax.swing.JFrame;

    public class Popup extends JFrame{
        JMenuItem item1,item2;
        static JPopupMenu pop;

        Popup(){
          item1= new JMenuItem("This is Menu Item");
          item2= new JMenuItem("This is another Menu Item");

          pop= new JPopupMenu();

          MouseListener popListener = new PopupListener();

          pop.add(item1);
          pop.add(item2);

          addMouseListener(popListener);        

          setLocationRelativeTo(null);
          pack();
          setVisible(true);
    }

      public static void main(String a []){
          new Popup();
      }

    }

    class PopupListener extends MouseAdapter{

     public void mousePressed(MouseEvent e) {
          maybeShowPopup(e);
          }

       public void mouseReleased(MouseEvent e) {
        maybeShowPopup(e);
       }

       private void maybeShowPopup(MouseEvent e) {
        if (e.isPopupTrigger()) {
            Popup.pop.show(e.getComponent(),
                    e.getX(), e.getY());
        }
      }

    }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10786037

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档