`

给Tab增加事件

阅读更多

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
                }
            }
        };
    }

 

 

 
0
2
分享到:
评论

相关推荐

    动态增加tab.zip

    总结起来,"动态增加tab.zip"是一个基于JavaScript(利用jQuery库)实现的动态Tab页示例,它通过HTML结构、JavaScript事件处理和可能的JSON数据来创建和管理Tab页。这种技术广泛应用于各种Web应用程序,以提供更灵活...

    bootstrap动态生成tab

    5. **事件处理和DOM操作**:在JavaScript中,我们需要熟练掌握事件监听(如`addEventListener`)和DOM操作(如`createElement`, `appendChild`, `removeChild`等)来实现动态生成和删除Tab。此外,理解Bootstrap的...

    横向和树形tab tab菜单

    横向Tab的设计可以是静态的,也可以带有动画效果,如滑动、淡入淡出等,增加用户体验。 2. **树形Tab**: 树形Tab是一种更为复杂且层次化的Tab结构,它允许用户通过展开和折叠节点来探索多级内容。每个Tab可能包含...

    flex checkboxtree 和可增加面板,可关闭的tab页

    3. **事件处理**:当用户点击关闭按钮时,触发一个事件,然后在父容器(即`TabNavigator`)中处理该事件,移除对应的`Tab`。 4. **添加新Tab**:提供一个接口让用户添加新的`Tab`,这可能包括输入新Tab的标题或其他...

    tab下面画线并有效三角

    5. **事件处理**:监听用户的点击或触摸事件,触发Tab的切换。 在提供的压缩包文件"Tab下面有小三角"中,可能包含了实现这个功能的HTML、CSS和JavaScript代码文件。通过查看这些源代码,我们可以更深入地了解具体...

    jquery渐变切换tab标签

    通过这种方式,"jQuery 渐变切换Tab标签"不仅提供了信息的清晰组织,还增加了视觉吸引力,使用户更愿意与网页进行交互。在懒人之家推荐的资源中,你可以找到相关的代码示例和详细教程,进一步学习和实践这种效果。...

    Ace Admin Tab页实现

    这时,可以在点击Tab事件中异步加载内容,并在加载完成后显示。 5. **API和插件**:Ace Admin可能还提供了API或插件来更方便地管理Tab页,例如添加、删除、切换Tab等功能。查阅Ace Admin的文档可以找到这些功能的...

    Android垂直tab导航栏、左侧竖直tab导航栏

    为了实现这样的功能,开发者可能需要利用Android的布局管理器(如LinearLayout或ConstraintLayout)来构建垂直排列的Tab,通过自定义View或者使用已有的开源库(如Android-VerticalTabLayout)来处理Tab的点击事件和...

    给TabHeader控件添加关闭标签并编辑该控件

    编辑TabHeader控件上的名字则是为了增加灵活性,让应用可以根据用户需求动态更新Tab页的标题。这可以通过提供一个文本框或其他输入控件,允许用户直接在TabHeader上编辑文本来实现。在用户完成编辑后,我们需要同步...

    Tab的创建,实现自定义Tab

    总之,创建自定义Tab涉及到界面设计、事件处理和功能扩展等多个方面。通过提供的源代码,开发者可以学习到如何在实际项目中实现这样的功能,同时也可以根据需求进行进一步的定制和优化。在实际编程中,理解并掌握...

    MFC属性创建及tab控件使用

    为了响应Tab控件的切换事件,我们可以重写OnSelChange成员函数: ```cpp afx_msg void OnSelchangeTabControl(NMHDR* pNMHDR, LRESULT* pResult); { LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast(pNMHDR)...

    TAB带动画效果

    通过监听Tab的点击事件,动态改变元素的CSS属性,从而触发动画效果。 3. React/Vue等框架:在现代Web开发中,React、Vue等前端框架提供了状态管理机制,可以方便地实现Tab组件及其动画效果。例如,React中的`...

    框架,底部tab,可以左右滑动,内嵌tab

    - 配置`OnNavigationItemSelectedListener`以响应Tab的切换事件。 - 调整动画和过渡效果,提升用户体验。 综上所述,这个设计涉及到Android应用架构、导航设计、UI组件以及源码解析等多个方面,对于开发者来说,...

    前端-tab切换

    - 增加键盘导航支持:通过监听键盘事件,允许用户使用上下左右键进行切换。 - 记住用户选择:使用`localStorage`或`cookie`来保存用户的最后选择,以便在下次访问时恢复。 - ARIA(无障碍)支持:添加适当的ARIA...

    Tab 控件的实现,添加背景色

    4. 可以在每个Tab页的加载事件中检查用户是否已登录,以控制内容的显示。 在Windows Forms中,你可以使用`Form.ShowDialog()`显示登录对话框,并在关闭时检查返回值。在WPF中,可以使用`Window`作为登录窗口,通过`...

    后台框架页,动态添加tab标签

    4. **事件监听**:添加事件监听器来处理用户与tab的交互,如切换tab、关闭tab等。每次切换tab时,需要更新内容区域以显示正确的信息。 5. **数据管理**:为了保持状态和同步视图,可能需要一个数据结构(如数组)来...

    jquery带按钮自动切换tab菜单源码

    1. **自动切换**:Tab菜单可以设置为定时自动切换当前激活的Tab,这样无需用户手动点击,内容会按照预设的时间间隔自动流动,增加了页面的动态感。这通常通过`setInterval`函数来实现,设定一定时间后执行切换Tab的...

    android纵向的tab

    传统的Tab布局通常是水平的,但随着设备屏幕尺寸和交互方式的变化,纵向Tab的需求也在逐渐增加。本教程将详细介绍如何创建一个Android纵向的Tab布局。 首先,我们需要了解Android的TabLayout组件。TabLayout是...

    jquery写的tab标签

    然而,自己编写Tab功能则有助于理解DOM操作、事件处理等JavaScript核心概念,提升编程技能。 总的来说,通过jQuery实现Tab标签是一项基础但实用的任务,它结合了HTML、CSS和JavaScript的知识,展示了前端开发中的...

    图片tab切换特效

    - 为了增加用户体验,我们可以添加过渡动画,使切换过程更加平滑。CSS3的`transition`属性可以用来定义这种变化,比如改变透明度、宽度、高度等。也可以使用jQuery的动画方法如`fadeIn()`和`fadeOut()`来实现淡入...

Global site tag (gtag.js) - Google Analytics