更改選項卡時,JTabbedPane始終將第一個可聚焦組件聚焦在選項卡內。 我該如何改變它的行爲,以便它可以聚焦最後聚焦的組件,或者根本不聚焦? 之後調用requestFocus不是一個選項,因爲JTabbedPane不能將焦點設置在錯誤的字段中。JTabbedPane - 在選項卡更改後聚焦最後聚焦的組件
1
A
回答
3
看看:Remembering last focused component。
您需要跟蹤每個選項卡中哪個組件具有焦點。然後,當選擇一個選項卡時,您需要將焦點更改爲適當的組件。
class TabbedPaneFocus extends JTabbedPane implements ChangeListener, PropertyChangeListener {
private Hashtable tabFocus;
public TabbedPaneFocus() {
tabFocus = new Hashtable();
addChangeListener(this);
KeyboardFocusManager.getCurrentKeyboardFocusManager().addPropertyChangeListener(this);
}
/*
* (non-Javadoc)
*
* @see java.beans.PropertyChangeListener#propertyChange(java.beans.PropertyChangeEvent)
*/
@Override
public void propertyChange(PropertyChangeEvent e) {
if ("permanentFocusOwner".equals(e.getPropertyName())) {
final Object value = e.getNewValue();
if (value != null) {
tabFocus.put(getTitleAt(getSelectedIndex()), value);
}
}
}
/*
* (non-Javadoc)
*
* @see javax.swing.event.ChangeListener#stateChanged(javax.swing.event.ChangeEvent)
*/
@Override
public void stateChanged(ChangeEvent e) {
Object value = tabFocus.get(getTitleAt(getSelectedIndex()));
if (value != null) {
((Component) value).requestFocusInWindow();
}
}
}
2
基本上這裏面工作的一個Top-Level Container正確
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
someComponent.grabFocus();
someComponent.requestFocus();//or inWindow
}
});
相關問題
- 1. 聚焦後跌落組合
- 2. 當選項卡聚焦MultiPageEditorPart中的更改時獲取通知
- 3. 當選項卡聚焦時運行Javascript
- 4. 聚焦還是不聚焦
- 5. 在更改DP值後啓用並聚焦禁用的控件
- 6. 刷新後聚焦TreeViewElement
- 7. Js-jQuery - 檢查元素是否聚焦或獲取最後聚焦元素類
- 8. 如何聚焦JtabbedPane創建標籤
- 9. 如何在JavaFX中選定選項卡更改時聚焦特定節點?
- 10. 聚焦在Excel
- 11. jquery聚焦事件
- 12. GTK聚焦事件
- 13. iPad Zoom在Safarai的未聚焦選項卡上的問題
- 14. 在未聚焦的選項卡中運行時的Javascript性能
- 15. 不同類型的點擊後聚焦
- 16. 角度2:可以聚焦和聚焦在一個事件嗎?
- 17. 更改按鈕時聚焦的鏈接
- 18. javascript焦點()不聚焦
- 19. 聚焦和聚焦(輸出)事件信號之間的區別
- 20. Android圖庫項目聚焦?
- 21. RepositoryItemComboBox疤項當未聚焦
- 22. 聚焦點擊事件後組合點火事件
- 23. JavaFX TabPane切換選項卡只在聚焦
- 24. 撤銷行爲後聚焦丟失
- 25. Flex/Air/AS3選擇並填充未聚焦選項卡
- 26. NSBox聚焦環?
- 27. LiveValidation - 聚焦
- 28. 聚焦textarea
- 29. 聚焦抽象
- 30. TBrowseForFolder選擇行聚焦
工作正常,謝謝! – Markus
你是對的,@camickr關於那個評論... +1 – mKorbel