Module  java.desktop
软件包  javax.swing

Class JTabbedPane

  • All Implemented Interfaces:
    ImageObserverMenuContainerSerializableAccessibleSwingConstants


    @JavaBean(defaultProperty="UI",
              description="A component which provides a tab folder metaphor for displaying one component from a set of components.")
    public class JTabbedPane
    extends JComponent
    implements Serializable, Accessible, SwingConstants
    通过点击具有给定标题和/或图标的选项卡,用户可以在一组组件之间切换的组件。 有关使用选项卡式窗格的示例和信息,请参阅“Java教程”中的 How to Use Tabbed Panes ”一节。

    通过使用addTabinsertTab方法将选项卡/组件添加到TabbedPane对象。 选项卡由与其添加的位置对应的索引表示,其中第一个选项卡的索引等于0,最后一个选项卡的索引等于制表符计数减1。

    TabbedPane使用SingleSelectionModel来表示选项卡索引和当前选择的索引。 如果选项卡计数大于0,那么将始终有一个选定的索引,默认情况下将其初始化为第一个选项卡。 如果选项卡计数为0,则所选索引将为-1。

    选项卡标题可以通过Component呈现。 例如,以下产生类似的结果:

      // In this case the look and feel renders the title for the tab.
     tabbedPane.addTab("Tab", myComponent);
     // In this case the custom component is responsible for rendering the
     // title of the tab.
     tabbedPane.addTab(null, myComponent);
     tabbedPane.setTabComponentAt(0, new JLabel("Tab")); 
    当需要更复杂的用户交互需要自定义组件时,通常会使用后者。 例如,您可以提供一个动画的自定义组件或具有关闭选项卡的小部件的组件。

    如果您为选项卡指定组件, JTabbedPane将不会呈现您为该选项卡指定的任何文本或图标。

    注意:不要使用setVisible直接在标签成分以使其可见,使用setSelectedComponent或者setSelectedIndex方法来代替。

    警告: Swing不是线程安全的。 有关详细信息,请参阅Swing's Threading Policy

    警告:此类的序列化对象与将来的Swing版本不兼容。 当前的序列化支持适用于运行相同版本的Swing的应用程序之间的短期存储或RMI。 从1.4开始,支持所有JavaBeans的长期存储已被添加到java.beans包中。 请参阅XMLEncoder

    从以下版本开始:
    1.2
    另请参见:
    SingleSelectionModelSerialized Form
    • 字段详细信息

      • WRAP_TAB_LAYOUT

        public static final int WRAP_TAB_LAYOUT
        当所有选项卡不适合单个运行时,用于在多个运行中包装选项卡的选项卡布局策略。
        另请参见:
        Constant Field Values
      • SCROLL_TAB_LAYOUT

        public static final int SCROLL_TAB_LAYOUT
        选项卡布局策略,用于在所有选项卡不适合单个运行时提供可用选项卡的子集。 X-
        另请参见:
        Constant Field Values
      • tabPlacement

        protected int tabPlacement
        放置标签的位置
        另请参见:
        setTabPlacement(int)
      • changeListener

        protected ChangeListener changeListener
        changeListener是我们添加到模型的监听器。
      • changeEvent

        protected transient ChangeEvent changeEvent
        由于事件的唯一(只读)状态是源属性,因此每个TabPane实例只需要一个ChangeEvent 这里产生的事件的来源总是“这”。
    • 方法详细信息

      • createChangeListener

        protected ChangeListener createChangeListener​()
        想要处理 ChangeEvents的子类可以覆盖此值以返回 ModelListener或另一个 ChangeListener实现的子类。
        结果
        一个 ChangeListener
        另请参见:
        fireStateChanged()
      • getChangeListeners

        @BeanProperty(bound=false)
        public ChangeListener[] getChangeListeners​()
        返回所有 ChangeListener的数组,并添加到 JTabbedPane其中包含 addChangeListener
        结果
        所有的 ChangeListener添加了,或者如果没有添加侦听器,则为空数组
        从以下版本开始:
        1.4
      • fireStateChanged

        protected void fireStateChanged​()
        发送一个ChangeEvent ,以这个JTabbedPane作为源,给每个注册的监听器。 每次在JTabbedPane选择的索引或所选选项卡上JTabbedPane更改此方法。 通常,所选索引和选定的选项卡一起更改。 但是,在某些情况下,如选项卡添加,所选索引更改和相同选项卡仍然选中。 还有其他情况,例如删除所选标签,其中索引保持不变,但是新的选项卡移动到该索引。 所有这些情况都会触发事件。
        另请参见:
        addChangeListener(javax.swing.event.ChangeListener)EventListenerList
      • getTabPlacement

        public int getTabPlacement​()
        返回此标签页窗格的标签页的位置。
        结果
        一个 int指定标签的位置
        另请参见:
        setTabPlacement(int)
      • setTabPlacement

        @BeanProperty(preferred=true,
                      visualUpdate=true,
                      enumerationValues={"JTabbedPane.TOP","JTabbedPane.LEFT","JTabbedPane.BOTTOM","JTabbedPane.RIGHT"},
                      description="The tabbedpane\'s tab placement.")
        public void setTabPlacement​(int tabPlacement)
        设置此标签页窗格的标签位置。 可能的值是:
        • JTabbedPane.TOP
        • JTabbedPane.BOTTOM
        • JTabbedPane.LEFT
        • JTabbedPane.RIGHT
        默认值(如果未设置)为SwingConstants.TOP
        参数
        tabPlacement - 相对于内容的选项卡的位置
        异常
        IllegalArgumentException - 如果选项 IllegalArgumentException值不是上述有效值之一
      • getTabLayoutPolicy

        public int getTabLayoutPolicy​()
        当所有选项卡不适合单个运行时,返回标签页窗口用于布局选项卡的策略。
        结果
        一个 int指定用于布局选项卡的策略
        从以下版本开始:
        1.4
        另请参见:
        setTabLayoutPolicy(int)
      • setTabLayoutPolicy

        @BeanProperty(preferred=true,
                      visualUpdate=true,
                      enumerationValues={"JTabbedPane.WRAP_TAB_LAYOUT","JTabbedPane.SCROLL_TAB_LAYOUT"},
                      description="The tabbedpane\'s policy for laying out the tabs")
        public void setTabLayoutPolicy​(int tabLayoutPolicy)
        设置当所有选项卡不适合单个运行时,选项卡窗格将用于布局选项卡的策略。 可能的值是:
        • JTabbedPane.WRAP_TAB_LAYOUT
        • JTabbedPane.SCROLL_TAB_LAYOUT
        默认值(如果不是由UI设置)为JTabbedPane.WRAP_TAB_LAYOUT

        某些外观和感觉可能只支持可能的布局策略的一个子集,在这种情况下,此属性的值可能会被忽略。

        参数
        tabLayoutPolicy - 用于布局选项卡的策略
        异常
        IllegalArgumentException - 如果layoutPolicy值不是上述有效值之一
        从以下版本开始:
        1.4
        另请参见:
        getTabLayoutPolicy()
      • getSelectedIndex

        public int getSelectedIndex​()
        返回此选项卡窗格的当前选择的索引。 如果没有当前选择的选项卡,则返回-1。
        结果
        所选标签的索引
        另请参见:
        setSelectedIndex(int)
      • setSelectedIndex

        @BeanProperty(bound=false,
                      preferred=true,
                      description="The tabbedpane\'s selected tab index.")
        public void setSelectedIndex​(int index)
        设置此选项卡窗格的所选索引。 索引必须是有效的选项卡索引或-1,表示不应选择任何选项卡(也可以在标签页窗格中没有选项卡时使用)。 如果在tabbedpane包含一个或多个选项卡时指定了-1值,则结果将被实现定义。
        参数
        index - 要选择的索引
        异常
        IndexOutOfBoundsException - 如果索引超出范围 (index < -1 || index >= tab count)
        另请参见:
        getSelectedIndex()SingleSelectionModel.setSelectedIndex(int)
      • getSelectedComponent

        public Component getSelectedComponent​()
        返回此选项卡窗格当前选定的组件。 如果没有当前选择的选项卡,则返回null
        结果
        该组件对应于所选的选项卡
        另请参见:
        setSelectedComponent(java.awt.Component)
      • getTabCount

        @BeanProperty(bound=false)
        public int getTabCount​()
        返回此 tabbedpane的选项卡数。
        结果
        一个指定标签页数的整数
      • getTabRunCount

        @BeanProperty(bound=false)
        public int getTabRunCount​()
        返回当前用于显示选项卡的选项卡运行次数。
        结果
        一个整数,如果 tabPlacementTOPBOTTOM并且如果 tabPlacementLEFTRIGHT ,则列数如果在这个 tabbedpane没有设置UI, tabbedpane
      • getDisabledIconAt

        public Icon getDisabledIconAt​(int index)
        index返回标签禁用图标。 如果在index不存在标签禁用的图标,这将转发呼叫的外观和感觉从相应的启用的图标构建一个适当的禁用图标。 有些看起来和感觉可能不会渲染残疾人图标,在这种情况下,它不会被创建。
        参数
        index - 正在查询的项目的索引
        结果
        图标为 index
        异常
        IndexOutOfBoundsException - 如果索引超出范围 (index < 0 || index >= tab count)
        另请参见:
        setDisabledIconAt(int, javax.swing.Icon)
      • getToolTipTextAt

        public String getToolTipTextAt​(int index)
        index返回标签工具提示文本。
        参数
        index - 要查询的项目的索引
        结果
        一个包含工具提示文本的字符串,位于 index
        异常
        IndexOutOfBoundsException - 如果索引超出范围 (index < 0 || index >= tab count)
        从以下版本开始:
        1.3
        另请参见:
        setToolTipTextAt(int, java.lang.String)
      • getForegroundAt

        public Color getForegroundAt​(int index)
        返回标签前景颜色为 index
        参数
        index - 要查询的项目的索引
        结果
        Color选项卡背景在 index
        异常
        IndexOutOfBoundsException - 如果索引超出范围 (index < 0 || index >= tab count)
        另请参见:
        setForegroundAt(int, java.awt.Color)
      • isEnabledAt

        public boolean isEnabledAt​(int index)
        返回当前是否启用了 index的选项卡。
        参数
        index - 要查询的项目的索引
        结果
        如果启用了index的选项卡, index true; 否则为假
        异常
        IndexOutOfBoundsException - 如果索引超出范围 (index < 0 || index >= tab count)
        另请参见:
        setEnabledAt(int, boolean)
      • getMnemonicAt

        public int getMnemonicAt​(int tabIndex)
        返回用于访问指定选项卡的键盘助记符。 助记符是当与外观和感觉的无摩擦修饰符(通常是Alt)组合时将激活指定的选项卡的关键。
        参数
        tabIndex - 助记符所指的标签的索引
        结果
        表示助记符的关键代码; -1如果未为选项卡指定助记符,则为-1
        异常
        IndexOutOfBoundsException - 如果索引超出范围( tabIndex <0 || tabIndex > =选项卡数)
        从以下版本开始:
        1.4
        另请参见:
        setDisplayedMnemonicIndexAt(int,int)setMnemonicAt(int,int)
      • getDisplayedMnemonicIndexAt

        public int getDisplayedMnemonicIndexAt​(int tabIndex)
        返回字符,作为索引,外观和感觉应提供装饰用于表示助记符。
        参数
        tabIndex - 助记符所指的标签的索引
        结果
        索引表示助记符,如果存在; 否则返回-1
        异常
        IndexOutOfBoundsException - 如果索引超出范围( tabIndex <0 || tabIndex > =选项卡数)
        从以下版本开始:
        1.4
        另请参见:
        setDisplayedMnemonicIndexAt(int,int)setMnemonicAt(int,int)
      • getBoundsAt

        public Rectangle getBoundsAt​(int index)
        返回标签边界index 如果此索引中的选项卡当前在UI中不可见,则返回null 如果这个tabbedpane没有设置UI,则返回null
        参数
        index - 要查询的索引
        结果
        一个 Rectangle包含选项卡边界在 index ,或 null如果在标签 index当前不可见的用户界面中,或如果没有UI上设置此 tabbedpane
        异常
        IndexOutOfBoundsException - 如果索引超出范围 (index < 0 || index >= tab count)
      • setDisabledIconAt

        @BeanProperty(preferred=true,
                      visualUpdate=true,
                      description="The disabled icon at the specified tab index.")
        public void setDisabledIconAt​(int index,
                                      Icon disabledIcon)
        将禁用图标设置为indexicon ,可以是null 如果该索引中没有选项卡,则会引发内部异常。
        参数
        index - 应设置禁用图标的标签索引
        disabledIcon - 禁用时要在标签页中显示的图标
        异常
        IndexOutOfBoundsException - 如果索引超出范围 (index < 0 || index >= tab count)
        另请参见:
        getDisabledIconAt(int)
      • setToolTipTextAt

        @BeanProperty(preferred=true,
                      description="The tooltip text at the specified tab index.")
        public void setToolTipTextAt​(int index,
                                     String toolTipText)
        将工具提示文本设置为indextoolTipText ,可以为null 如果该索引中没有选项卡,则会引发内部异常。
        参数
        index - 应该设置工具提示文本的选项卡索引
        toolTipText - 要为选项卡显示的工具提示文本
        异常
        IndexOutOfBoundsException - 如果索引超出范围 (index < 0 || index >= tab count)
        从以下版本开始:
        1.3
        另请参见:
        getToolTipTextAt(int)
      • setBackgroundAt

        @BeanProperty(preferred=true,
                      visualUpdate=true,
                      description="The background color at the specified tab index.")
        public void setBackgroundAt​(int index,
                                    Color background)
        将背景颜色设置为indexbackground ,可以为null ,在这种情况下,选项卡的背景颜色将默认为tabbedpane的背景颜色。 如果该索引中没有选项卡,则会引发内部异常。

        这是符合这种财产的外观和感觉,有些人可能会选择忽略它。

        参数
        index - 应该设置背景的标签索引
        background - 要在标签背景中显示的颜色
        异常
        IndexOutOfBoundsException - 如果索引超出范围 (index < 0 || index >= tab count)
        另请参见:
        getBackgroundAt(int)
      • setForegroundAt

        @BeanProperty(preferred=true,
                      visualUpdate=true,
                      description="The foreground color at the specified tab index.")
        public void setForegroundAt​(int index,
                                    Color foreground)
        将前景颜色设置为indexforeground ,其中可以是null ,在这种情况下,选项卡的前景颜色将默认为此tabbedpane的前景色。 如果该索引中没有选项卡,则会引发内部异常。

        这是符合这种财产的外观和感觉,有些人可能会选择忽略它。

        参数
        index - 应设置前景的标签索引
        foreground - 要显示为标签前景的颜色
        异常
        IndexOutOfBoundsException - 如果索引超出范围 (index < 0 || index >= tab count)
        另请参见:
        getForegroundAt(int)
      • setEnabledAt

        public void setEnabledAt​(int index,
                                 boolean enabled)
        设置是否启用index的选项卡。 如果该索引中没有选项卡,则会引发内部异常。
        参数
        index - 应该启用/禁用的选项卡索引
        enabled - 是否应启用该选项卡
        异常
        IndexOutOfBoundsException - 如果索引超出范围 (index < 0 || index >= tab count)
        另请参见:
        isEnabledAt(int)
      • setComponentAt

        @BeanProperty(visualUpdate=true,
                      description="The component at the specified tab index.")
        public void setComponentAt​(int index,
                                   Component component)
        将组件设置为indexcomponent 如果该索引中没有选项卡,则会引发内部异常。
        参数
        index - 要放置此组件的制表符索引
        component - 选项卡的组件
        异常
        IndexOutOfBoundsException - 如果索引超出范围 (index < 0 || index >= tab count)
        另请参见:
        getComponentAt(int)
      • setDisplayedMnemonicIndexAt

        @BeanProperty(visualUpdate=true,
                      description="the index into the String to draw the keyboard character mnemonic at")
        public void setDisplayedMnemonicIndexAt​(int tabIndex,
                                                int mnemonicIndex)
        提供关于文字中哪个字符应该被装饰以表示助记符的外观和感觉的提示。 不是所有的外观和感觉都可以支持这一点。 值为-1表示此选项卡没有助记符,或者您不希望为此选项卡显示助记符。

        这个值被更新为与助记符变化相关的属性(如助记符本身,文本...)。 如果您不希望默认字符被加下划线,您应该只需要调用它。 例如,如果选项卡索引3处的文本是“苹果价格”,使用“p”的助记符,并且您希望将“P”装饰为“Apple P rice”,则在调用后必须调用setDisplayedMnemonicIndex(3, 6) setMnemonicAt(3, KeyEvent.VK_P)

        请注意,程序员有责任确保每个选项卡具有唯一的助记符或不可预测的结果。

        参数
        tabIndex - 助记符所指的标签的索引
        mnemonicIndex - 索引到 String下划线
        异常
        IndexOutOfBoundsException - 如果 tabIndex超出范围( tabIndex < 0 || tabIndex >= tab count
        IllegalArgumentException - 如果 mnemonicIndex是> =选项卡标题的长度,或<-1
        从以下版本开始:
        1.4
        另请参见:
        setMnemonicAt(int,int)getDisplayedMnemonicIndexAt(int)
      • setMnemonicAt

        @BeanProperty(visualUpdate=true,
                      description="The keyboard mnenmonic, as a KeyEvent VK constant, for the specified tab")
        public void setMnemonicAt​(int tabIndex,
                                  int mnemonic)
        设置用于访问指定选项卡的键盘助记符。 助记符是当与外观和感觉的无摩擦修饰符(通常是Alt)组合时将激活指定的选项卡的关键。

        助记符必须对应于键盘上的单个键,并且应使用VK_XXX定义的VK_XXXjava.awt.event.KeyEvent之一或通过java.awt.event.KeyEvent.getExtendedKeyCodeForChar获得的扩展键java.awt.event.KeyEvent一个来java.awt.event.KeyEvent.getExtendedKeyCodeForChar 助记符不区分大小写,因此具有相应键码的键事件将导致按钮被激活,无论Shift修改器是否被按下。

        这将更新指定选项卡的显示助记符属性。

        参数
        tabIndex - 助记符所指的标签的索引
        mnemonic - 表示助记符的关键代码
        异常
        IndexOutOfBoundsException - 如果 tabIndex超出范围( tabIndex < 0 || tabIndex >= tab count
        从以下版本开始:
        1.4
        另请参见:
        getMnemonicAt(int)setDisplayedMnemonicIndexAt(int,int)
      • indexOfTab

        public int indexOfTab​(String title)
        返回具有给定的 title的第一个选项卡索引,如果没有选项卡具有此标题,则返回-1。
        参数
        title - 标签的标题
        结果
        第一个选项卡索引匹配 title ,如果没有选项卡具有此标题, title -1
      • indexOfTab

        public int indexOfTab​(Icon icon)
        返回具有给定 icon的第一个制表符索引,如果没有选项卡具有此图标,则返回-1。
        参数
        icon - 标签的图标
        结果
        第一个选项卡索引匹配 icon ,如果没有选项卡具有此图标, icon -1
      • indexOfComponent

        public int indexOfComponent​(Component component)
        返回指定组件的选项卡的索引。 如果此组件没有选项卡,则返回-1。
        参数
        component - 选项卡的组件
        结果
        与该组件匹配的第一个选项卡,如果此组件没有选项卡,则为-1
      • indexAtLocation

        public int indexAtLocation​(int x,
                                   int y)
        返回与其边界与指定位置相交的选项卡对应的选项卡索引。 如果没有选项卡与位置相交,则返回-1。
        参数
        x - 相对于此 x的x位置
        y - 相对于此 y的y位置
        结果
        与该位置相交的选项卡索引,如果没有选项卡与该位置相交,则为-1
        从以下版本开始:
        1.4
      • getToolTipText

        public String getToolTipText​(MouseEvent event)
        返回由鼠标事件位置确定的组件的工具提示文本。
        重写:
        getToolTipTextJComponent
        参数
        event - MouseEvent ,告诉游标在哪里
        结果
        String包含工具提示文本
      • paramString

        protected String paramString​()
        返回此JTabbedPane的字符串表示JTabbedPane 该方法仅用于调试目的,并且返回的字符串的内容和格式可能因实现而异。 返回的字符串可能为空,但可能不是null
        重写:
        paramStringJComponent
        结果
        这个JTabbedPane的字符串表示形式。
      • getAccessibleContext

        @BeanProperty(bound=false)
        public AccessibleContext getAccessibleContext​()
        获取与此JTabbedPane关联的AccessibleContext。 对于标签窗格,AccessibleContext采用AccessibleJTabbedPane的形式。 如有必要,将创建一个新的AccessibleJTabbedPane实例。
        Specified by:
        getAccessibleContext在接口 Accessible
        重写:
        getAccessibleContextComponent
        结果
        一个AccessibleJTabbedPane,作为这个JTabbedPane的AccessibleContext
      • setTabComponentAt

        @BeanProperty(preferred=true,
                      visualUpdate=true,
                      description="The tab component at the specified tab index.")
        public void setTabComponentAt​(int index,
                                      Component component)
        设置负责渲染指定选项卡的标题的组件。 空值表示JTabbedPane将呈现指定选项卡的标题和/或图标。 非空值表示组件将呈现标题,而JTabbedPane将不会呈现标题和/或图标。

        注意:组件不能是开发人员已经添加到选项卡窗格的组件。

        参数
        index - 组件应设置的选项卡索引
        component - 为指定选项卡呈现标题的组件
        异常
        IndexOutOfBoundsException - 如果索引超出范围 (index < 0 || index >= tab count)
        IllegalArgumentException - 如果组件已经添加到此 JTabbedPane
        从以下版本开始:
        1.6
        另请参见:
        getTabComponentAt(int)
      • indexOfTabComponent

        public int indexOfTabComponent​(Component tabComponent)
        返回指定选项卡组件的选项卡的索引。 如果此选项卡组件没有选项卡,则返回-1。
        参数
        tabComponent - 选项卡的选项卡组件
        结果
        与此选项卡组件匹配的第一个选项卡,如果此选项卡组件没有选项卡,则为-1
        从以下版本开始:
        1.6
        另请参见:
        setTabComponentAt(int, java.awt.Component)getTabComponentAt(int)