java - 如何在JComboBox中显示自定义PopupMenu

标签 java swing jcombobox jpopupmenu

JComboBox 单击时显示列表。我想显示一个 JPopupMenu 而不是列表。 在以下代码中,事件被触发,但弹出窗口未显示。为什么?

JComboBox box = new JComboBox();

box.addPopupMenuListener(new PopupMenuListener() {
   @Override
   public void popupMenuWillBecomeVisible(PopupMenuEvent e) {      
     popupMenu.show(box, 0, box.getHeight());
   }
   ...
});

最佳答案

或者可以使用 mouseListener。由于 JDK 错误 https://bugs.java.com/bugdatabase/view_bug.do?bug_id=4144505 必须将 mouseListener 添加到所有后代,如下所示:

 MouseAdapter comboPopupAdapter = new MouseAdapter() {
      @Override
      public void mousePressed(MouseEvent e) {
        popupMenu.show(box, 0, box.getHeight());
      }
    };
    box.addMouseListener(comboPopupAdapter);
    for (Component c : box.getComponents()) {
      c.addMouseListener(comboPopupAdapter);
    }

关于java - 如何在JComboBox中显示自定义PopupMenu,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61249485/

相关文章:

使用invokelater重新绘制时不会调用Java PaintComponent

java - 选择列表项时 JoptionPane 显示两次

Java JComboBox 重绘错误

Java Swing : consuming key events

java - Log4j LocationInfo Struts + Tomcat 缓慢

java - 如果从另一个 JFrame 类调用该类,则打开 JFrame 时出现问题

java - 如何让JComboBox 表格编辑器具有普通JComboBox 的设计?

java - 使用 JdbcTemplate 插入多行

java - 将两个已排序的 Arraylist 合并为一个已排序的 Arraylist

Java - 如何正确添加多个带有背景图像的面板?