gpt4 book ai didi

java - 在获得焦点时打开 JXDatePicker

转载 作者:行者123 更新时间:2023-11-29 05:47:03 24 4
gpt4 key购买 nike

我正在尝试扩展 JXDatePicker,以便它在获得焦点时打开。搜索了我理解的提示,但没有成功。有没有一种优雅的方式来做到这一点?

最佳答案

令人惊讶的是,这真的不可能:-(

这一次,JXDatePicker 本身没有用于显示/隐藏弹出窗口的 API(只有 BasicDatePickerUI 有)。此外,ui 委托(delegate)有一些内部魔力(阅读:hacks ... cough),这使得 FocusListener 比通常在复合组件中更难处理。

可玩的片段:

final JXDatePicker picker = new JXDatePicker();
FocusListener l = new FocusListener() {

@Override
public void focusGained(FocusEvent e) {
// no api on the picker, need to use the ui delegate
BasicDatePickerUI pickerUI = (BasicDatePickerUI) picker.getUI();
if (!pickerUI.isPopupVisible()) {
pickerUI.toggleShowPopup();
}
SwingUtilities.invokeLater(new Runnable() {
public void run() {
// opening the popup moves the focus to ... ?
// need to grab it back onto the editor
picker.getEditor().requestFocusInWindow();
}
});
}

@Override
public void focusLost(FocusEvent e) {
}
};
// need to register the listener on the editor
picker.getEditor().addFocusListener(l);
JComponent content = new JPanel();
content.add(new JButton("dummy"));
content.add(picker);

不太令人满意,因为再次将焦点移出时自动关闭弹出窗口不能可靠地工作,需要两个选项卡(不知道为什么)

关于java - 在获得焦点时打开 JXDatePicker,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15486261/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com