【问题标题】:Open JPopupMenu from opened JComboBox从打开的 JComboBox 打开 JPopupMenu
【发布时间】:2012-06-28 13:40:54
【问题描述】:

我想更改组合框的 OOTB 行为,在单击鼠标右键后冻结它(检测单击了哪个按钮很容易,所以这不是重点)并打开 JPopupMenu 而不是选择那个条目。

那么 - 如何禁用在给定条件下选择条目并使用自定义行为呢?

我尝试通过向所有组合框组件添加鼠标侦听器开始,但没有成功 - 没有任何改变

import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.JComboBox;
import javax.swing.JFrame;

public class MainClass {

    public static void main(final String args[]) {

        final String labels[] = { "A", "B", "C", "D", "E" };
        JFrame frame = new JFrame("Selecting JComboBox");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        JComboBox comboBox = new JComboBox(labels);
        frame.add(comboBox, BorderLayout.SOUTH);
        frame.setSize(400, 200);
        frame.setVisible(true);

        for (Component c : comboBox.getComponents()) {
            c.addMouseListener(new MouseAdapter() {
                public void mouseClicked(MouseEvent e) {
                    System.out.println("cli");
                    super.mouseClicked(e);
                }
                public void mousePressed(MouseEvent e) {
                    System.out.println("pre");
                    super.mousePressed(e);
                }
            });
        }
    }
}

【问题讨论】:

  • 当在组合框中选择一个值时,您到底想实现什么?

标签: java swing jcombobox jpopupmenu jpopup


【解决方案1】:
  • 在 Swing 中无法同时显示两个轻量级的弹出式容器

  • 关于JComboBox popup from JPopup的例子

  • 关于将JPopup 设置为重量级的一些肮脏的技巧

  • 但我建议将AWT ContainerSwing JComponents 混合使用,并将AWT.PopupSwing.JComponent 一起使用(JMenuItemJButton

【讨论】:

  • +1 我一直在玩,是的,你是对的,绝对是机器人!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-20
  • 2023-02-21
  • 1970-01-01
  • 2021-12-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多