java - 如何获取 JComboBox 弹出菜单列表作为组件对象

标签 java swing listener jcombobox popupmenu

在我的 swing 应用程序中,我有一个带有组合框的对话框。在我正在应用 AffineTransformation 。所有组件都在调整大小,但 JComponent 弹出菜单列表除外。我正在尝试使用一个事件来获取 ComboBox 的 Popupmenu 对象。

 public static void displayComp(JComponent jComponent) {
    if (jComponent != null) {
        final Container awtContainer = (Container) jComponent;
        final Component[] components = awtContainer.getComponents();
        for (Component comp : components) {
            if (comp instanceof JComboBox) {

                JComboBox<JComponent> b = (JComboBox<JComponent>) comp;
                b.addActionListener(new ActionListener() {

                    @Override
                    public void actionPerformed(ActionEvent e) {
                        System.out.println("e::" + e);
                        JMenuItem mi = (JMenuItem) e.getSource();
                        JPopupMenu popup = (JPopupMenu) mi.getParent();
                        System.out.println("popup:::" + popup);
                    }
                });
                System.out.print("JComboBox :::");
                System.out.println(comp.getPreferredSize() + "***Component**" + comp.getName());
            }

            if (comp instanceof JComponent) {
                displayComp((JComponent) comp);
            }
        }
    }
}

最佳答案

您可以使用以下代码获取弹出组件

JComboBox combo = ...;
BasicComboPopup popup = (BasicComboPopup) combo.getUI().getAccessibleChild(combo, 0);

关于java - 如何获取 JComboBox 弹出菜单列表作为组件对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48582485/

相关文章:

java - Java 或 C 中字符的位操作?

java - 当缓冲区已满时,DataOutputStream 会自动刷新吗?

java - 导出对象之间的关系

java - 子窗口出现在主窗口的背景中?

java - 短信广播接收器不工作

android - 微调器 : onItemSelected not called when selected item remains the same

java - Java中的内存管理利用

java - 在 Java 面板中包含命令提示符

java - 在swing中上传Excel文件

java - 设置监听器的更好方法是什么?