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