- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在一帧中使用JDateChooser
和一些组合框。当我在 JDateChooser 中打开 popupcalendar 并在外部单击鼠标时,此弹出菜单将关闭。
问题:当我打开此日历然后单击任何组合框时,日历弹出菜单不会关闭。为什么它会发生以及我如何在代码中关闭或隐藏它。
我已经尝试过这样的popup.setVisible(false)
,但它不起作用。如果我尝试像popup.hide()
弹出菜单永远不会关闭。
最佳答案
我遇到了与OP相同的问题,但是接受的答案并没有真正帮助我解决问题。不过我找到了解决方案,所以我想将其发布在这里。
查看 JDateChooser (1.4) 的源代码,我在构造函数中发现了这一点:
popup = new JPopupMenu() {
private static final long serialVersionUID = -6078272560337577761L;
public void setVisible(boolean b) {
Boolean isCanceled = (Boolean) getClientProperty("JPopupMenu.firePopupMenuCanceled");
if (b
|| (!b && dateSelected)
|| ((isCanceled != null) && !b && isCanceled.booleanValue())) {
super.setVisible(b);
}
}
};
popup.setLightWeightPopupEnabled(true);
popup.add(jcalendar);
请注意弹出窗口的“setVisible”方法如何被自定义功能覆盖。这与组合框似乎不太兼容。
为了解决这个问题,我使用了自己的类,扩展了 JDateChooser,并将其添加到我的构造函数中:
this.popup = new JPopupMenu();
this.popup.setLightWeightPopupEnabled(true);
this.popup.add(this.jcalendar);
基本上,我们正在重新定义弹出窗口,以不覆盖 setVisible 功能。现在,当我单击组合框时,弹出窗口会正确隐藏。
编辑经过进一步测试,我发现我无法再从日期选择器的组合框中选择月份而不关闭它(大问题)。请参阅下面的我修改后的自定义日期选择器类的完整代码:
public class CustomDateChooser extends JDateChooser {
public CustomDateChooser() {
super();
this.popup = new JPopupMenu() {
@Override
public void setVisible(final boolean b) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
handleVisibility(b);
}
});
}
private void handleVisibility(boolean b) {
if (!jcalendar.getMonthChooser().getComboBox().hasFocus()) {
super.setVisible(b);
}
}
};
this.popup.setLightWeightPopupEnabled(true);
this.popup.add(this.jcalendar);
}
}
通过重写 JPopupMenu 的 setVisible() 方法,我们现在仅在月份选择器组合框没有焦点时调用 setVisible。请注意,我们必须使用线程(invokeLater)来完成这项工作,否则代码将在组合框实际获得焦点之前执行。
关于java - 如何隐藏或关闭弹出菜单 JDateChooser?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31457159/
我在一帧中使用JDateChooser和一些组合框。当我在 JDateChooser 中打开 popupcalendar 并在外部单击鼠标时,此弹出菜单将关闭。 问题:当我打开此日历然后单击任何组合框
我正在使用 jcalendar-1.2.2 jar 中的 JDateChooser。我已将 dateformatString 设置为“yyyyMMdd”。默认情况下,它显示今天的日期 2010 年 9
我正在使用下面的库JDateChooser,它是一个日期选择器 GUI,我们可以将其放入 Netbeans 托盘中。 http://plugins.netbeans.org/plugin/658/jd
我正在尝试将 focusListener 添加到 JDateChooser,以便当用户选择 dateOfBirth 时,当焦点丢失时,它会在文本字段上显示年龄。但它不起作用这是我尝试过的方法, 导入j
我正在将 JDateChooser 用于 Java 应用程序(这是我第一次使用它)。我想在 JDateChooser 为空时捕获错误,代码如下: if(dcs1.getDate().toString(
我在我的 Java 项目中使用 jDate Chooser我需要从 jDateChooser 检索日期并将其放入 mySQL 表中我使用的方法是 newBirthDate=(Date)inBirthD
这个问题已经有答案了: Is it possible to detect a date change on a JCalendar JDateChooser field? (2 个回答) 已关闭 5
我有一个表单,我想在其中访问数据库中的日期并在 jDateChooser 中显示特定记录。如何从数据库表中获取日期以及如何在 jDateChooser 中设置该日期?我的数据库中的数据类型是日期。
我正在使用 netbeans 和 MySQL Workbech 开发一个项目。 我有一个注册表单,我希望用户选择一个日期。如果他们不选择日期,我想使用今天的日期作为默认日期。 我正在使用 jcalen
我想在 JCalendar 上禁用多个日期范围.我正在关注 these steps ,但我需要知道如何添加多个日期评估器。请帮助我,谢谢。 更新:我不知道为什么我不能禁用 JCalendar 上的日期
我正在使用 JCalendar 的 1.4 JDateChooser 所以我问是否可以更改月份和星期几的显示名称而无需更改源代码,或者,因为没看过源码,能改也改不复杂。谢谢。 最佳答案 JCalend
我有一个表单,我想在该表单上访问数据库中的日期并在 jDateChooser 中显示特定记录。 我将日期作为字符串保存在数据库中。 如何从数据库表中获取日期以及如何在 jDateChooser 中设置
我需要对齐 Jdatechooser 文本字段中的文本。它总是将文本(所选日期)对齐到左侧,但我需要在右侧。 我已经尝试过,但它不起作用, StartJCal.setAlignmentX(RIGHT_
我通过搜索如何在 Java Swing 中使用 Item Combobox 发现了这个 JDateChooser。你知道如何安装吗? 这是链接JDateChooser 我找不到任何关于如何安装它的说明
我使用JDateChooser编辑表单中的日期。 简短版本:我需要区分 JDateChooser 上的用户日期编辑和编程属性更改。 解决方法:我发现了一个名为 dateSelected 的 prote
我在 netbeans 上使用 jDateChooser 插件。当应用程序启动时,它会抛出nullpointerException,但是当我选择日期时,它工作正常。唯一的问题是它在运行时抛出异常。以下
我正在尝试从 JDateChooser 获取值并将其用作文件名我创建了一个带有路径的文件,我可以在上面写入,但唯一的问题是我无法将其名称更改为变量(数据来自 JDateChooser) 这是部分代码:
我需要将当前日期设置为 jdatechooser 这段代码是不工作 Date date = new Date (); Jdatechooser.setDate(date); 最佳答案 您需要一个日期选
是否可以将焦点从 jFormattedTextField 更改为 JDateChooser? 我尝试过以下方法: jFormattedTextField.addActionListener(new A
我有一个机场项目。我有一个图形用户界面,我想在其中搜索某些航类。在这个图形用户界面中,我有一个 JDateChooser(因为我想在我的数据库中找到某个航类)。在数据库中,我有一个名为 date_de
我是一名优秀的程序员,十分优秀!