- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前面临的情况是,如果用户单击我的组合框并用按键移动选择,则选择监听器将继续被调用,尽管出于所有目的,用户仍然没有真正做出选择。
如何在组合框中区分这些“中间”选择和正确的最终用户选择?
我尝试查看诸如 isPopupVisible
之类的变量,甚至尝试使用 PopupMenuListener
但它们似乎并没有真正的帮助。
谢谢
编辑:违规代码示例:
public class Main extends JFrame {
public Main() {
setLayout(new FlowLayout(FlowLayout.LEFT, 10, 10));
JComboBox<String> comboBox = new JComboBox<>();
comboBox.setModel(new DefaultComboBoxModel<>(new String[] { "a", "b", "c" }));
comboBox.addItemListener(e -> {
System.out.println(e.getItem());
});
add(comboBox);
}
}
最佳答案
I need something that only fires when the user actually clicks and the popup disappears.
comboBox.putClientProperty("JComboBox.isTableCellEditor", Boolean.TRUE);
设置上述属性,以便仅在释放鼠标或按 Enter 键时生成事件。
注意:
如果您使用ActionListner
,则在选择某个项目时始终会生成事件。
如果您使用 ItemListener
,则仅当您更改先前选择的所选项目时才会生成事件。
编辑:
您可以使用以下方法禁用按键选择:
JComboBox comboBox = new JComboBox( model )
{
@Override
public boolean selectWithKeyChar(char keyChar)
{
return false;
}
};
编辑2:
或者也许作为一种黑客,您可以在进行键搜索时禁用监听器。代码可能类似于:
JComboBox comboBox = new JComboBox( model )
{
@Override
public boolean selectWithKeyChar(char keyChar)
{
// remove the listener here
// This will cause the selected index to change
Boolean result = super.selectWithKeyChar(keyChar);
// add the listener back here
return result;
}
};
关于java - 如何检测用户何时真正选择了 ComboBox 的菜单项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54451917/
我正在创建一个项目来使用评级系统评估不同的产品,但由于我是新手,所以我有几个问题。 首先,为了实现这个目标,我创建了一个 ListView ,它允许我使用从该数据库获取的 JSON 代码显示 MySQ
在对学校的大型作业进行故障排除时,我发现了一个错误,我将单个项目列表(包含一个项目的堆栈)视为单个项目。我解决了我的问题,但是在进一步的测试中我注意到一些奇怪的事情: 48 ?- 1 is [1].
嘿,我正在修改我在 Internet 上找到的示例应用程序。 (学习2破解)我想在我的 ReclycerView 中获取单行的 ID。这是代码。 主要 private void initVie
我在一个项目中使用 ASP.NET MVC SiteMap 提供程序,它运行良好。但是,我很难弄清楚如何隐藏菜单项。我想在全局导航中隐藏的菜单项是我的“站点地图”页面。现在我知道有一个东西叫做 Vis
我是一名优秀的程序员,十分优秀!