使用快捷键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); }
参考: