1
我想擴展JXDatePicker,以便它在獲得焦點時打開。 已搜索表明,我明白沒有成功。 有沒有一個這樣做的優雅方式?打開JXDatePicker獲取焦點
我想擴展JXDatePicker,以便它在獲得焦點時打開。 已搜索表明,我明白沒有成功。 有沒有一個這樣做的優雅方式?打開JXDatePicker獲取焦點
令人驚訝的是,這不是:-(
這一次真的可能,JXDatePicker本身沒有API來顯示/隱藏彈出(僅BasicDatePickerUI了)加上UI委託有一些內在的魔法(讀:黑客...咳),使一個的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);
不是真的滿意,因爲彈出窗口自動關閉在轉化中的焦點out再次無法可靠地工作,需要兩個選項卡(不知道爲什麼)
謝謝.......... :-) – mKorbel 2013-03-19 10:43:34
一如既往與JSomething:不擴展:-)和往常一樣使用複合組件:必須完成註冊低級偵聽器在相關的孩子,而不是父母(與可編輯組合相同) – kleopatra 2013-03-18 22:59:06
我對Java很新,有什麼地方可以得到這樣的建議。特別是要找出爲什麼不應該擴展一個JSomething,似乎是一個好主意,我一直在爲其他許多組件取得明顯的成功:-)我面前有什麼災難? – 2013-03-19 06:38:29
@kleopatra aaaach please :-)這個答案不談論什麼行動顯示與JXMonthPanel的JXxxXxxPopup :-) – mKorbel 2013-03-19 08:20:47