`
chenyu.hz
  • 浏览: 139643 次
  • 性别: Icon_minigender_1
  • 来自: 宁波
社区版块
存档分类
最新评论

java实现tab可关闭(chrome风格)

 
阅读更多

 

 

* @author zhangtao
package zht.tab.demo;

import java.awt.BorderLayout;

public class TabDemo extends JPanel {

	public static void main(String[] args) {
		ZHTUtils.showComponentInFrame(new TabDemo());
	}

	public TabDemo() {
		initGUI();
	}

	private ZHTTabbedPane pane = new ZHTChromeTabbedPane();
	private TabConfigDialog configDialog = new TabConfigDialog(pane);

	private void initGUI() {
		pane.setTabWidth(180);
		initTabPane();
		initTabPopupMenu();
		this.setLayout(new BorderLayout());
		this.add(pane, BorderLayout.CENTER);
	}

	private void initTabPopupMenu() {
		pane.setPopMenuGenerator(new TabPopupMenuGenerator() {
			public JPopupMenu generate(ZHTTabbedPane zhtTabbedPane, MouseEvent mouseEvent) {
				JPopupMenu menu = new JPopupMenu();
				final Tab currentTab = pane.getMouseOverTab();
				final List tabList = new ArrayList(pane.getTabList());
				final int index = tabList.indexOf(currentTab);
				final int size = tabList.size();
				JMenuItem item;
				if (currentTab != null) {

					item = createMenuItem("Close Tab", new ActionListener() {
						public void actionPerformed(ActionEvent e) {
							pane.closeTab(currentTab);
						}
					});
					menu.add(item);

					item = createMenuItem("Close other tabs", new ActionListener() {
						public void actionPerformed(ActionEvent e) {
							List removeList = new ArrayList();
							for (int i = 0; i < size; i++) {
								Tab tab = (Tab) tabList.get(i);
								if (tab != currentTab) {
									removeList.add(tab);
								}
							}
							int rsize = removeList.size();
							for (int i = 0; i < rsize; i++) {
								Tab tab = (Tab) removeList.get(i);
								pane.closeTab(tab);
							}
						}
					});
					if (size == 1) {
						item.setEnabled(false);
					}
					menu.add(item);

					item = createMenuItem("Close tabs to the left", new ActionListener() {
						public void actionPerformed(ActionEvent e) {
							List removeList = new ArrayList();
							for (int i = index - 1; i >= 0; i--) {
								Tab tab = (Tab) tabList.get(i);
								removeList.add(tab);
							}
							int rsize = removeList.size();
							for (int i = 0; i < rsize; i++) {
								Tab tab = (Tab) removeList.get(i);
								pane.closeTab(tab);
							}
						}
					});
					if (index == 0) {
						item.setEnabled(false);
					}
					menu.add(item);
					item = createMenuItem("Close tabs to the right", new ActionListener() {
						public void actionPerformed(ActionEvent e) {
							for (int i = size - 1; i > index; i--) {
								pane.closeTab(i);
							}
						}
					});
					if (index == tabList.size() - 1) {
						item.setEnabled(false);
					}
					menu.add(item);
					menu.addSeparator();
				}
				item = createMenuItem("Config", new ActionListener() {
					public void actionPerformed(ActionEvent e) {
						configDialog.setVisible(true);
					}
				});
				menu.add(item);

				menu.addSeparator();
				item = createMenuItem("About", new ActionListener() {
					public void actionPerformed(ActionEvent e) {

					}
				});
				menu.add(item);
				return menu;
			}
		});
	}

	private JMenuItem createMenuItem(String label, ActionListener listener) {
		final JMenuItem item = new JMenuItem(label);
		if (listener != null) {
			item.addActionListener(listener);
		}
		item.setOpaque(false);
		return item;
	}

	private void initTabPane() {
		ImagePanel panel = new ImagePanel(new ImageIcon(this.getClass().getResource("google.png")));
		Icon icon = new ImageIcon(this.getClass().getResource("1.png"));
		Tab tab = new Tab(panel, false, icon, "GoogleZH");
		pane.addTab(tab, true);

		panel = new ImagePanel(new ImageIcon(this.getClass().getResource("googleen.png")));
		icon = new ImageIcon(this.getClass().getResource("2.png"));
		tab = new Tab(panel, true, icon, "GoogleEN");
		pane.addTab(tab);

		panel = new ImagePanel(new ImageIcon(this.getClass().getResource("googlenews.png")));
		icon = new ImageIcon(this.getClass().getResource("3.png"));
		tab = new Tab(panel, true, icon, "GoogleNews");
		pane.addTab(tab);

		panel = new ImagePanel(new ImageIcon(this.getClass().getResource("micro.png")));
		icon = new ImageIcon(this.getClass().getResource("1.png"));
		tab = new Tab(panel, true, icon, "Micro");
		pane.addTab(tab);

		panel = new ImagePanel(new ImageIcon(this.getClass().getResource("msn.png")));
		icon = new ImageIcon(this.getClass().getResource("2.png"));
		tab = new Tab(panel, true, icon, "MSN");
		pane.addTab(tab);

		pane.setBackgroundImage(new ImageIcon(this.getClass().getResource("back.jpg")).getImage());
	}

}

class ImagePanel extends JComponent {
	ImageIcon image;

	public ImagePanel(ImageIcon image) {
		this.image = image;
	}

	protected void paintComponent(Graphics g) {
		super.paintComponent(g);
		g.drawImage(image.getImage(), 0, 0, this);
	}
}

 

  • 大小: 54.4 KB
  • zht.zip (1.6 MB)
  • 下载次数: 124
分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    java实现的Tab选项

    Java 实现的Tab选项是一种常见的用户界面(UI)设计元素,用于在有限的空间内组织和切换多个视图或内容面板。在Java编程中,我们可以利用Java Swing或JavaFX库来创建这样的功能。以下是对这个主题的详细阐述: 一、...

    Winform 高仿 Chrome 的 Tab页控件

    "Winform 高仿 Chrome 的 Tab页控件"正是这样一个实现,它旨在模拟Chrome浏览器的标签页行为,包括新增、删除、移动以及自适应宽度等功能,从而让桌面应用也能拥有类似浏览器的交互体验。 首先,我们要理解...

    Chrome插件IETAB

    Chrome插件IETAB

    chrome插件开发 - tab页面切换插件

    我们可以监听`chrome.tabs`事件,如`onUpdated`和`onRemoved`,以便在用户切换或关闭标签时更新页面信息。同时,可以设置快捷键或浏览器动作(browser action),当用户点击插件图标时触发页面切换功能。 在content...

    仿Chrome浏览器风格可单独关闭的网页TAB选项卡插件.rar

    仿Chrome浏览器风格可单独关闭的网页TAB选项卡插件,可以依次打开多个TAB,每个TAB上都有关闭按钮,可以单独被关闭,美化的也很漂亮,功能更人性化的网页选项卡插件,自带的示例运行于HTML5环境,各个功能都可充分...

    IE_Tab_for_Chrome-10.5.10.1

    标题中的"IE_Tab_for_Chrome-10.5.10.1"表明这是一个针对Google Chrome浏览器的扩展程序,版本号为10.5.10.1。这个扩展的主要功能是将Internet Explorer(IE)浏览器的功能集成到Chrome中,让用户在Chrome环境下也能...

    ie tab for chrome

    ie tab for chrome

    IE Tab Chrome 插件,切换IE内核

    标题“IE Tab Chrome 插件,切换IE内核”揭示了本文将要讨论的是一个名为“IE Tab”的Chrome浏览器插件,其主要功能是允许用户在Chrome浏览器中以Internet Explorer(IE)内核模式浏览网页。这对于那些仍然需要使用...

    ie tab插件 chrome

    IE Tab 这款插件对于Chrome的...用户以后访问某些只支持 IE 登录的网站时可以在Chrome中使用 IE Tab 打开,Chrome用户便可充分享受Chrome带来的快速浏览体验,不妨试试吧。 有详细安装步骤,2018年02月10日亲测可用。

    ie tab crx chrome

    【IE Tab CRX for Chrome】是一款专为谷歌浏览器(Chrome)设计的扩展程序,它允许用户在Chrome浏览器中以Internet Explorer(IE)内核来渲染网页。这在某些情况下非常有用,比如当某些网站只能在IE浏览器上正常运行...

    js 实现 Enter键实现Tab键功能

    js 实现 Enter键实现Tab键功能! 值得下载看看!资源免费,大家分享!!

    IE Tab Multi (Enhance) for Chrome 1.0.0.1离线安装包

    可在Chrome内使用多标签页式的IE,同时比其它IE扩展拥有更多强大的实用功能! IE Tab Multi 的表现与原版IE是最相近的。 你可以不用再另外打开IE访问只能在IE中访问的网站并运行ActiveX控件。 这个扩展只支持Windows...

    java web tab

    java web tab

    tab页的实现方法 实现tab

    这里我们将深入探讨几种常见的实现方式,以及如何利用JSP(JavaServer Pages)和插件来构建Tab页。 1. HTML/CSS/JavaScript基础实现: 使用纯HTML和CSS,你可以创建一个简单的Tab结构,通过CSS控制隐藏和显示内容...

    IE TAB for chrome

    IE TAB for chrome 插件

    ie tab插件

    IE Tab 这款插件对于Chrome的爱好者来说应该都不会感到陌生了。...用户以后访问某些只支持 IE 登录的网站时可以在Chrome中使用 IE Tab 打开,Chrome用户便可充分享受Chrome带来的快速浏览体验,不妨试试吧。

    Dream After New Tab for Chrome (谷歌浏览器新标签插件/扩展)

    Google Chrome插件: Dream After New Tab . 为chrome添加新标签页新样式, 并可以替代默认的chrome://newtab 离线插件使用方法: 1. 地址栏键入chrome://extensions/ 或者 自定义及控制按钮(右上角) -&gt; 更多工具 -&gt; ...

    chrome插件ie tab

    chrome插件ie tab 解决chrome浏览器不能访问工行等网站的插件

    bootstrap-closable-tab tab可关闭组件

    例如,它如何添加事件监听器,如何构建DOM元素,以及如何在Tab关闭时清理相关资源。 在`bootstrap-closable-tab-master`这个压缩包中,你可能会找到以下文件: - `js` 文件夹:包含实现这个功能的JavaScript代码,...

Global site tag (gtag.js) - Google Analytics