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

设置可关闭的tab

 
阅读更多

 

package demo.swing;

import java.awt.Component;

import java.awt.Dimension;

import java.awt.GridLayout;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.event.InputEvent;

import java.awt.event.KeyEvent;

 

import javax.swing.JCheckBoxMenuItem;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JMenu;

import javax.swing.JMenuBar;

import javax.swing.JMenuItem;

import javax.swing.JPanel;

import javax.swing.JTabbedPane;

import javax.swing.KeyStroke;

import javax.swing.SwingUtilities;

 

public class TabComponentsDemo extends JFrame{

 

    private JTabbedPane pane = new JTabbedPane();

    private JMenuItem scrollTabItem ;

    private JMenuItem componentTabItem;

    private final int numTab = 5;

      

    public TabComponentsDemo(String title) {

       //设置frame标题名

       super(title);

       //设置关闭方式

       setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

       //创建菜单栏

       initMenu();

       //将tabpane添加到frame中

       add(pane);

      

    }

   

    //初始化tabpanel相关配置,并且用于resize的调用

    public  void runTest() {

       //设置有关闭按键的标签

       componentTabItem.setSelected(true);

      

       //设置标签

       for(int i = 0 ; i < numTab ; i++)

       {

           //标签名

           String name = "tab "+i;

           //创建标签

           pane.add(name,createContent(name));

           //初始化标签上的文字和Button

           initTabComponent(i);

       }

      

      

       //设置frame的大小

       setSize(new Dimension(500,500));

       //将frame放到屏幕的正中央

       setLocationRelativeTo(null);

       //显示frame

       setVisible(true);

      

 

    }

   

    //创建标签内容部分

    private Component createContent(String name) {

       //创建一个panel,并设置布局为一个分块

       JPanel panel = new JPanel(new GridLayout(1,1));

       //创建一个label

       JLabel label = new JLabel(name);

       //设置label的文本格式

       label.setHorizontalAlignment(JLabel.CENTER);

       //将label放入panel中

       panel.add(label);

       return panel;

    }

 

    //初始化带有关闭按钮的标签头部

    private void initTabComponent(int i) {

       //用这个函数可以初始化标签的头部

       pane.setTabComponentAt(i, new ButtonTabComponent(pane));

       }

   

    //创建菜单栏

    private void initMenu() {

       //创建一个菜单条

       JMenuBar mb = new JMenuBar();

      

       //创建重叠tab选项

       scrollTabItem = new JCheckBoxMenuItem("重叠tab");

       //设置快捷键

        scrollTabItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,InputEvent.CTRL_MASK));

       //设置监听事件

       scrollTabItem.addActionListener(new ActionListener() {

          

           @Override

           public void actionPerformed(ActionEvent arg0) {

              if(pane.getTabLayoutPolicy() == JTabbedPane.SCROLL_TAB_LAYOUT)

                  pane.setTabLayoutPolicy(JTabbedPane.WRAP_TAB_LAYOUT);

              else

                  pane.setTabLayoutPolicy(JTabbedPane.SCROLL_TAB_LAYOUT);

           }

       });

      

       //设置可关闭的标签的菜单

       componentTabItem = new JCheckBoxMenuItem("设置可关闭的tab");

      componentTabItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,InputEvent.CTRL_MASK));

       componentTabItem.addActionListener(new ActionListener() {

          

           @Override

           public void actionPerformed(ActionEvent e) {

              for(int i = 0 ; i < numTab ; i++)

              {

                  if(componentTabItem.isSelected())

                     initTabComponent(i);

                  else

                     pane.setTabComponentAt(i, null);

              }

           }

       });

      

       //设置重置标签

       JMenuItem reSetItem = new JMenuItem("重置");

       reSetItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_R,InputEvent.CTRL_MASK));

       reSetItem.addActionListener(new ActionListener() {

          

           @Override

           public void actionPerformed(ActionEvent e) {

              runTest();

           }

       });

      

       //创建菜单

       JMenu menu = new JMenu("选项");

       //添加菜单项

       menu.add(componentTabItem);

       menu.add(scrollTabItem);

       menu.add(reSetItem);

      

       //添加菜单

       mb.add(menu);

       //添加菜单条(注意一个frame只能有一个菜单条,所以用set)

       setJMenuBar(mb);

      

    }

 

    public static void main(String[] args) {

       SwingUtilities.invokeLater(new Runnable() {

          

           @Override

           public void run() {

              new TabComponentsDemo("可关闭的tab测试").runTest();

           }

       });

    }

 

 

} 


 


 
  • 大小: 16.7 KB
分享到:
评论
发表评论

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

相关推荐

    JS可关闭tab 实用

    要实现“JS可关闭tab”的功能,我们通常会利用window.open()方法来创建新的窗口或标签页,并保留对该窗口的引用。然后,我们可以通过这个引用调用window.close()方法来关闭它。以下是一个简单的例子: ```...

    基于js的iframe 可关闭tab标签组件使用方法

    以上就是基于JavaScript的iframe可关闭tab标签组件的实现方法。这个组件可以根据实际需求进行扩展和定制,比如添加动画效果、缓存iframe内容以提高性能等。希望这个教程对你在网页开发中实现类似功能有所帮助。如果...

    基于Netbeans-swing可关闭tab选择页

    在"基于Netbeans-swing可关闭tab选择页"的项目中,开发者已经利用这个特性创建了一个能够动态添加和关闭标签的程序。尽管代码可能尚未完全优化,但其核心理念是添加了自定义的事件监听器来处理关闭操作,并确保在...

    bootstrap-closable-tab tab可关闭组件

    然而,Bootstrap的默认Tab组件并不支持用户自行关闭Tab。`bootstrap-closable-tab` 是一个扩展功能,为Bootstrap的Tab添加了可关闭的特性。 这个`bootstrap-closable-tab`组件主要关注于提供一种方式,使得用户可以...

    自适应可关闭Tab_tab_Tabú_WPF_corne63_可关闭_源码

    在本文中,我们将深入探讨基于WPF(Windows Presentation Foundation)的自适应可关闭Tab控件。这个名为"Tabú_WPF_corne63_可关闭"的项目提供了一种实现方式,使用户可以根据需要自由地打开和关闭Tab页,同时具有...

    bootstrap-tab页带右键关闭

    3. **关闭操作**:关闭Tab页通常涉及到DOM操作,移除对应的`&lt;li&gt;`元素和内容区域。在执行关闭操作时,我们还需要考虑如何保持Tab的激活状态,以及更新Tab的索引和计数。 4. **自定义JSON配置**:允许用户通过JSON来...

    可打开关闭的tab选项卡

    在网页设计中,"可打开关闭的tab选项卡"是一种常见的交互元素,它极大地提升了用户在浏览和操作网站时的体验。这种效果通常用于展示不同的内容板块,让用户能够方便地切换和管理信息。例如,像网易邮箱那样,用户...

    bootstrap-closable-tab.js tab标签页扩展之关闭全部和关闭其他

    1. **关闭单个标签页**:在每个可关闭的标签页上添加了一个关闭按钮(通常表现为一个"×"符号)。当用户点击这个按钮时,对应的标签页及其内容将被移除,同时页面会自动更新以保持正确的显示状态。 2. **关闭全部...

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

    2. **自定义Tab**:为了实现可关闭的`Tab`,你需要创建一个自定义的`Tab`组件,包含一个关闭按钮和必要的事件处理。 3. **事件处理**:当用户点击关闭按钮时,触发一个事件,然后在父容器(即`TabNavigator`)中...

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

    在Java编程中,实现类似Chrome浏览器那样的可关闭Tab功能,主要涉及到GUI(图形用户界面)设计,特别是Swing或JavaFX库的应用。本篇将详细讲解如何使用Java Swing来实现这个功能,因为Swing是Java标准GUI库的一部分...

    简洁的支持展开关闭的tab标签代码

    2. **易用性**:用户可以直观地理解如何打开和关闭Tab,不需要额外的教程或指导。 3. **响应式**:可能考虑了不同屏幕尺寸和设备的适配,确保在各种环境下都能正常工作。 4. **可扩展性**:设计时可能留有接口,方便...

    jQuery Tab 可关闭的网页选项卡特效.rar

    jQuery Tab 可关闭的网页选项卡特效,网页上的标签效果,每个TAB标签都可以关闭,就像现在主流的163邮箱、QQ邮箱中的效果,模拟出了PC浏览器的效果,选项卡可以无限制增多,超出宽度会出现滚动条,本演示页面中包括...

    WPF tab宽度自适应 可关闭

    以下将详细讲解如何实现“WPF TabControl”的可关闭功能以及宽度自适应。 一、添加可关闭按钮 1. 创建一个新的`TabItem`模板:首先,我们需要创建一个自定义的`DataTemplate`,在其中添加一个可以关闭的按钮。通常...

    JQuery Tab选项卡且可关闭

    本项目涉及的主题是“jQuery Tab选项卡且可关闭”,这是一个常见的UI组件,用于组织和展示页面上的多部分内容。下面我们将深入探讨这个功能的实现、原理以及相关的jQuery和HTML/CSS知识。 首先,jQuery Tab选项卡的...

    关闭easyui 的tab 释放iframe的内存

    ### 关闭EasyUI的Tab并释放Iframe内存的方法 #### 背景介绍 在使用EasyUI框架开发Web应用程序时,经常会用到`Tabs`组件。`Tabs`组件允许用户在一个容器内创建多个标签页,每个标签页可以独立加载不同的内容。其中一...

    [QT]实现Tab键切换控件的两种方式及禁止Tab切换的简单方法

    例如,如果你有两个`QLineEdit`对象,`lineEdit1`和`lineEdit2`,你可以这样设置它们的Tab切换顺序: ```cpp setTabOrder(lineEdit1, lineEdit2); ``` 这样,当用户按下Tab键时,焦点会从`lineEdit1`转移到`...

    Linux系统中vim设置tab键的宽度

    - `set noexpandtab`:关闭将tab键转换为空格的功能,保持原有的tab字符不变。通常情况下,配合`softtabstop`和`shiftwidth`使用,可以获得最佳效果。 - `set nu`:开启行号显示,便于代码定位。 - `set autoindent`...

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

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

    WPF Prism 可关闭的TabControl

    总结来说,通过使用WPF和Prism框架,我们可以实现一个具有可关闭Tab功能的TabControl。这个功能的实现依赖于自定义控件、依赖注入以及MVVM模式的运用。通过这样的设计,我们可以保持代码的整洁性和可维护性,同时为...

Global site tag (gtag.js) - Google Analytics