更改选项卡时,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