tab对应的类是:javax.swing.JTabbedPane
1,增加双击事件:
tabbedPane_22.addMouseListener(new MouseAdapter() { private int heightLevel=0; @Override public void mouseReleased(MouseEvent e) { } @Override public void mousePressed(MouseEvent e) { } @Override public void mouseClicked(MouseEvent e) { JTabbedPane tabbedPane = (JTabbedPane) e.getSource(); int selectedIndex = tabbedPane.getSelectedIndex(); //当前选择的标签页 Component selectedTab= tabbedPane.getComponentAt(selectedIndex); if(!ValueWidget.isNullOrEmpty(selectedTab)&&jsonFormattedPane==selectedTab){ if(e.getClickCount()==2){ switch (heightLevel%3) { case 0: splitPane_out.setDividerLocation(getDividerHeight()[0]); break; case 1: splitPane_out.setDividerLocation(15); break; case 2: splitPane_inner.setDividerLocation(getDividerHeight()[0]); splitPane_out.setDividerLocation(getDividerHeight()[1]); RequestPanel.this.repaint(); break; default: break; } heightLevel++; } } } });
2,增加右键菜单
tabbedPane_2.addMouseListener(getMouseInputListener(tabbedPane_2, this));
监听器:
public static MouseInputListener getMouseInputListener(final JTabbedPane tabbedPane ,final AutoTestPanel autoTestPanel) { return new MouseInputListener() { public int count; public void mouseClicked(MouseEvent e) { /*if(e.getClickCount()==1){ final int rowCount = jTable.getSelectedRow(); final int columnCount=jTable.getSelectedColumn(); int modifiers = e.getModifiers(); modifiers -= MouseEvent.BUTTON3_MASK; modifiers |= MouseEvent.FOCUS_EVENT_MASK; MouseEvent ne = new MouseEvent(e.getComponent(), e.getID(), e.getWhen(), modifiers, e.getX(), e.getY(), 2, false); // processEvent(ne); jTable.editCellAt(rowCount, columnCount,ne); // CellEditor cellEditor=jTable.getCellEditor(rowCount, columnCount); // cellEditor.shouldSelectCell(ne); jTable.dispatchEvent(ne); }*/ System.out.println("mouseClicked"+(count++)); processEvent(e); } /*** * in order to trigger Left-click the event */ public void mousePressed(MouseEvent e) { processEvent(e);// is necessary!!! System.out.println("mousePressed"+(count++)); } public void mouseReleased(MouseEvent e) { RequestPanel currentRequestPanel2=(RequestPanel)tabbedPane.getSelectedComponent(); if(ValueWidget.isNullOrEmpty(currentRequestPanel2)){ currentRequestPanel2=autoTestPanel.getCurrentRequestPanel(); } if (e.getButton() == MouseEvent.BUTTON3) {// right click // processEvent(e); // System.out.println("row:" + rowCount); //右键点击表格时,点击的单元格,正常情况返回的是String // System.out.println("rowCount:"+rowCount); // System.out.println("columnCount:"+columnCount); JPopupMenu popupmenu = new JPopupMenu(); JMenuItem runM = new JMenuItem(RequestPanel.ACTION_COMMAND_RUN); JMenuItem cleanUp_runM = new JMenuItem("清空后再运行"); JMenuItem copyParameterM = new JMenuItem(RequestPanel.ACTION_COMMAND_COPY_REQUEST_PARAMETER); JMenuItem copyResponseM = new JMenuItem(RequestPanel.ACTION_COMMAND_COPY_RESPONSE); JMenuItem copyAccessTokenM = new JMenuItem("复制access_token"); JMenuItem cleanUpCellM = new JMenuItem("清空单元格"); cleanUpCellM.setActionCommand(MenuUtil2.ACTION_STR_CLEANUP_CELL); JMenuItem sendPostM = new JMenuItem("打开网页发送POST请求"); JMenuItem copyPanelM = new JMenuItem("复制请求panel"); JMenuItem deleteCurrentPanelM = new JMenuItem("删除当前请求panel"); JMenuItem cleanResultM = new JMenuItem("清空结果"); JMenuItem copyRequestInfoM=new JMenuItem(RequestPanel.ACTION_COMMAND_COPY_REQUEST_INFO); JMenuItem pasteRequestInfoM=new JMenuItem(RequestPanel.ACTION_COMMAND_PASTE_REQUEST_INFO); MyTableMenuListener yMenuActionListener = new MyTableMenuListener(null,SystemHWUtil.NEGATIVE_ONE ,SystemHWUtil.NEGATIVE_ONE,currentRequestPanel2); runM.addActionListener(yMenuActionListener); cleanUp_runM.addActionListener(yMenuActionListener); copyParameterM.addActionListener(yMenuActionListener); copyResponseM.addActionListener(yMenuActionListener); copyAccessTokenM.addActionListener(yMenuActionListener); cleanResultM.addActionListener(yMenuActionListener); copyRequestInfoM.addActionListener(yMenuActionListener); pasteRequestInfoM.addActionListener(yMenuActionListener); cleanUpCellM.addActionListener(yMenuActionListener); sendPostM.addActionListener(yMenuActionListener); copyPanelM.addActionListener(yMenuActionListener); deleteCurrentPanelM.addActionListener(yMenuActionListener); popupmenu.add(cleanUp_runM); popupmenu.add(runM); popupmenu.add(copyParameterM); popupmenu.add(copyResponseM); popupmenu.add(copyAccessTokenM); popupmenu.add(cleanUpCellM); popupmenu.add(sendPostM); popupmenu.add(copyPanelM); popupmenu.add(deleteCurrentPanelM); popupmenu.add(cleanResultM); popupmenu.add(copyRequestInfoM); popupmenu.add(pasteRequestInfoM); popupmenu.show(e.getComponent(), e.getX(), e.getY()); // processEvent(e); }/*else if (e.getButton() == MouseEvent.BUTTON1&& e.getClickCount()==1){ System.out.println("左键"); int modifiers = e.getModifiers(); modifiers |= MouseEvent.FOCUS_EVENT_MASK; MouseEvent ne = new MouseEvent(e.getComponent(), e.getID(), e.getWhen(), modifiers, e.getX(), e.getY(), 2, false); // processEvent(ne); // jTable.editCellAt(rowCount, columnCount,ne); // CellEditor cellEditor=jTable.getCellEditor(rowCount, columnCount); // cellEditor.shouldSelectCell(ne); jTable.dispatchEvent(ne); }*/ System.out.println("mouseReleased"+(count++)); } public void mouseEntered(MouseEvent e) { processEvent(e); } public void mouseExited(MouseEvent e) { processEvent(e); } public void mouseDragged(MouseEvent e) { processEvent(e); } public void mouseMoved(MouseEvent e) { processEvent(e); } private void processEvent(MouseEvent e) { // Right-click on if ((e.getModifiers() & MouseEvent.BUTTON3_MASK) != 0) { // System.out.println(e.getModifiers()); // System.out.println("Right-click on"); int modifiers = e.getModifiers(); modifiers -= MouseEvent.BUTTON3_MASK; modifiers |= MouseEvent.BUTTON1_MASK; MouseEvent ne = new MouseEvent(e.getComponent(), e.getID(), e.getWhen(), modifiers, e.getX(), e.getY(), e.getClickCount(), false); tabbedPane.dispatchEvent(ne);// in order to trigger Left-click // the event } } }; }