使用快捷键Shift+Tab切换Tab
使用一个变量存储点击过的Tab的序号
private int defaultTabbedIndex=0;
/***
* tab 的序号,用于使用快捷键Shift+Tab 切换Tab
*/
private List<Integer>indexList=new ArrayList<Integer>();
{
indexList.add(defaultTabbedIndex);
}
每次选中某个Tab,就把该Tab的index添加进indexList中:
tabbedPane.addChangeListener(new ChangeListener() {
@Override
public void stateChanged(ChangeEvent e) {
JTabbedPane tabbedPane = (JTabbedPane) e.getSource();
int selectedIndex = tabbedPane.getSelectedIndex();
indexList.add(selectedIndex);
}
});
获取上一次Tab的序号:
/***
* 获取上一次Tab的序号
* @return
*/
private int getLastIndex(){
int length=indexList.size();
if(length<2){
return SystemHWUtil.NEGATIVE_ONE;
}
return indexList.get(length-2);
}
增加全局快捷键:
/***
* 增加全局快捷键Shift+Tab
*/
private void addGlobalKey(){
Toolkit toolkit = Toolkit.getDefaultToolkit();
// 注册应用程序全局键盘事件, 所有的键盘事件都会被此事件监听器处理.
toolkit.addAWTEventListener(
new java.awt.event.AWTEventListener() {
public void eventDispatched(AWTEvent event) {
if (event.getClass() == KeyEvent.class) {
KeyEvent kE = ((KeyEvent) event);
// 处理按键事件 Shift+Tab
if ((kE.getKeyCode() == KeyEvent.VK_TAB)
&& (((InputEvent) event)
.isShiftDown())&& kE.getID() == KeyEvent.KEY_PRESSED) {
System.out.println("111");
int lastIndex=getLastIndex();
if(lastIndex<0){
return;
}
// indexList.add(tabbedPane.getSelectedIndex());
tabbedPane.setSelectedIndex(lastIndex);
}
}
}
}, java.awt.AWTEvent.KEY_EVENT_MASK);
}
参考: