【发布时间】:2020-04-16 11:48:29
【问题描述】:
JComboBox 在点击时显示一个列表。我想显示JPopupMenu,而不是列表。
在下面的代码中,事件被触发,但弹出窗口没有出现。为什么?
JComboBox box = new JComboBox();
box.addPopupMenuListener(new PopupMenuListener() {
@Override
public void popupMenuWillBecomeVisible(PopupMenuEvent e) {
popupMenu.show(box, 0, box.getHeight());
}
...
});
【问题讨论】:
-
您可以将
JPopupMenu与任何JComponent关联。为什么不做一个伪JComboBox?一个JTextField和一个JButton,当你点击按钮时,会出现一个JPopupMenu。 -
为什么? - 是的,问题是你为什么要这样做? JComboBox 是为特定目的而设计的,用于显示添加到组合框中的项目列表。如果您想做一些不同的事情,那么您可以创建自己的自定义组件。在不知道您为什么要做这样的事情的情况下,我们无法提供替代建议,除了不要尝试将方形盒子放入圆孔中。
-
我附近有一个 JComboBox,希望用户拥有完全相同的用户体验。所以 Button 必须看起来与 ComboBox 完全一样。我使用 Nimbus LAF,很难创建一个看起来像这样的按钮。这就是为什么我放弃了@Abra 和 camickr 建议的方法。
-
你在comment 中写道:我正在使用 Nimbus LAF,很难创建一个看起来像这样的 Button。 也许这会有所帮助:Nimbus Defaults跨度>
-
但是按钮和组合框应该看起来不同。他们不应该有相同的用户体验。祝你好运。
标签: java swing jcombobox jpopupmenu