且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

使用快捷键Shift+Tab切换Tab

更新时间:2021-09-12 09:27:56

使用快捷键Shift+Tab切换Tab

使用一个变量存储点击过的Tab的序号

Java代码  使用快捷键Shift+Tab切换Tab
  1. private int defaultTabbedIndex=0;  
  2.     /*** 
  3.      * tab 的序号,用于使用快捷键Shift+Tab 切换Tab 
  4.      */  
  5.     private List<Integer>indexList=new ArrayList<Integer>();  
  6.     {  
  7.         indexList.add(defaultTabbedIndex);  
  8.     }  

 

每次选中某个Tab,就把该Tab的index添加进indexList中:

Java代码  使用快捷键Shift+Tab切换Tab
  1. tabbedPane.addChangeListener(new ChangeListener() {  
  2.             @Override  
  3.             public void stateChanged(ChangeEvent e) {  
  4.                 JTabbedPane tabbedPane = (JTabbedPane) e.getSource();  
  5.                 int selectedIndex = tabbedPane.getSelectedIndex();  
  6.                 indexList.add(selectedIndex);  
  7.             }  
  8.         });  

 

获取上一次Tab的序号:

Java代码  使用快捷键Shift+Tab切换Tab
  1. /*** 
  2.      * 获取上一次Tab的序号 
  3.      * @return 
  4.      */  
  5.     private int getLastIndex(){  
  6.         int length=indexList.size();  
  7.         if(length<2){  
  8.             return SystemHWUtil.NEGATIVE_ONE;  
  9.         }  
  10.         return indexList.get(length-2);  
  11.     }  

 

增加全局快捷键:

Java代码  使用快捷键Shift+Tab切换Tab
  1. /*** 
  2.      * 增加全局快捷键Shift+Tab 
  3.      */  
  4.     private void addGlobalKey(){  
  5.         Toolkit toolkit = Toolkit.getDefaultToolkit();  
  6.         // 注册应用程序全局键盘事件, 所有的键盘事件都会被此事件监听器处理.  
  7.         toolkit.addAWTEventListener(  
  8.                 new java.awt.event.AWTEventListener() {  
  9.                     public void eventDispatched(AWTEvent event) {  
  10.                         if (event.getClass() == KeyEvent.class) {  
  11.                             KeyEvent kE = ((KeyEvent) event);  
  12.                             // 处理按键事件 Shift+Tab  
  13.                             if ((kE.getKeyCode() == KeyEvent.VK_TAB)  
  14.                                     && (((InputEvent) event)  
  15.                                             .isShiftDown())&& kE.getID() == KeyEvent.KEY_PRESSED) {  
  16.                                 System.out.println("111");  
  17.                                 int lastIndex=getLastIndex();  
  18.                                 if(lastIndex<0){  
  19.                                     return;  
  20.                                 }  
  21. //                              indexList.add(tabbedPane.getSelectedIndex());  
  22.                                 tabbedPane.setSelectedIndex(lastIndex);  
  23.                             }   
  24.                         }  
  25.                     }  
  26.                 }, java.awt.AWTEvent.KEY_EVENT_MASK);  
  27.     }  

 

 

参考:

java swing增加全局快捷键

java swing 下拉框增加回车事件