跳转到主要内容

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

当您初次登录到 developerWorks 时,将会为您创建一份概要信息。您在 developerWorks 概要信息中选择公开的信息将公开显示给其他人,但您可以随时修改这些信息的显示状态。您的姓名(除非选择隐藏)和昵称将和您在 developerWorks 发布的内容一同显示。

所有提交的信息确保安全。

  • 关闭 [x]

当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

所有提交的信息确保安全。

  • 关闭 [x]

Merlin 的魔力: 滚动选项卡窗格

当大得无法容下时怎么办

John Zukowski (jaz@zukowski.net), 总裁, JZ Ventures, Inc.
Author photo
John Zukowski 为 JZ Ventures, Inc.做战略性 Java 咨询,同时还担任一些 jGuru的由社区推动的 Java 常见问题解答的常驻指导。他最近的著作有 Apress 出版的 Java Collections Definitive Guide to Swing for Java 2 (第 2 版)。请通过 jaz@zukowski.net与 John 联系。

简介: 在 Java 平台的 Merlin 发行版之前,Swing 的 JTabbedPane 控件只允许将选项卡换成多行。 JTabbedPane 的新的、改进的版本允许您在一行上滚动选项卡。在 Merlin 的魔力的这一部分,John Zukowski 演示了如何更改 JTabbedPane 的布局策略并提供了一个完整的示例供您使用。请在 讨论论坛与本文作者和其他读者交流关于本文的心得。

发布日期: 2001 年 9 月 01 日
级别: 初级
访问情况 : 1030 次浏览
评论: 


开始

JTabbedPane 控件是一个容器,它根据用户选择的选项卡允许他或她访问不同的组件集。当您用 JTabbedPane 设计用户界面时,指定许多选项卡也是很常见的。如果用户的屏幕尺寸比期望的小,就会出现问题;在这种情况下,选项卡将换为多行。换行导致每个选项卡上的组件期望的屏幕空间减小。所占区域根据显示跨越 JTabbedPane 各个选项卡所需的行数按比例减小 — 对用户界面工程师来说,这很可怕。

图 1 演示了 UI 工程师初始设置的屏幕的样子,而图 2 显示了当屏幕宽度小于期望大小时将会怎样。


图 1. 单行宽 JTabbedPane
单行宽 JTabbedPane

图 2. 多行窄 JTabbedPane
多行窄 JTabbedPane

更改布局策略

Merlin 发行版允许您通过设置 JTabbedPane 的新 tabLayoutPolicy 属性更改此行为。通过将缺省设置从 JTabbedPane.WRAP_TAB_LAYOUT 更改为 JTabbedPane.SCROLL_TAB_LAYOUT ,选项卡将不再换行,而是停留在一行,如清单 1 所示。箭头被添加到尾部,用于移到屏幕上容不下的选项卡,如图 3 所示。

清单 1. 更改 JTabbedPane 的布局策略

  JTabbedPane pane = new JTabbedPane();
  pane.setTabLayoutPolicy(JTabbedPane.SCROLL_TAB_LAYOUT);


图 3. 窄、单行 JTabbedPane
多行窄 JTabbedPane

如果选项卡垂直放置,而不是平行放置(见图 4),布局策略也会有所帮助。


图 4. 选项卡在左边的 JTabbedPane
选项卡在左边的 JTabbedPane

一个完整的示例

它的确包含所有的东西。清单 2 包含完整的示例源代码,也可从 参考资料下载。

清单 2. 完整的示例

import javax.swing.*;
import java.text.*;
import java.awt.*;
public class Tabs {
  public static void main(String args[]) {
    String[] months = new DateFormatSymbols().getShortMonths();
    JTabbedPane pane = new JTabbedPane();
    pane.setTabLayoutPolicy(JTabbedPane.SCROLL_TAB_LAYOUT);
//    pane.setTabPlacement(JTabbedPane.LEFT);
    for (int i=0; i < 12; i++) {
      JPanel panel = new JPanel(new BorderLayout());
      JButton button = new JButton(months[i]);
      panel.add(button);
      pane.add(months[i], panel);
    }
    JFrame frame = new JFrame("Tabs");
    frame.getContentPane().add(pane, BorderLayout.CENTER);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setSize(300, 200);
    frame.show();
  }
}


参考资料

关于作者

Author photo

John Zukowski 为 JZ Ventures, Inc.做战略性 Java 咨询,同时还担任一些 jGuru的由社区推动的 Java 常见问题解答的常驻指导。他最近的著作有 Apress 出版的 Java Collections Definitive Guide to Swing for Java 2 (第 2 版)。请通过 jaz@zukowski.net与 John 联系。

关于报告滥用的帮助

报告滥用

谢谢! 此内容已经标识给管理员注意。


关于报告滥用的帮助

报告滥用

报告滥用提交失败。 请稍后重试。


developerWorks:登录


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 使用条款

 


当您初次登录到 developerWorks 时,将会为您创建一份概要信息。您在 developerWorks 概要信息中选择公开的信息将公开显示给其他人,但您可以随时修改这些信息的显示状态。您的姓名(除非选择隐藏)和昵称将和您在 developerWorks 发布的内容一同显示。

请选择您的昵称:

当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

(长度在 3 至 31 个字符之间)


单击提交则表示您同意developerWorks 的条款和条件。 使用条款.

 


为本文评分

评论

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Java technology
ArticleID=53087
ArticleTitle=Merlin 的魔力: 滚动选项卡窗格
publish-date=09012001
author1-email=jaz@zukowski.net
author1-email-cc=

标签

Help
使用 搜索 文本框在 My developerWorks 中查找包含该标签的所有内容。

使用 滑动条 调节标签的数量。

热门标签 显示了特定专区最受欢迎的标签(例如 Java technology,Linux,WebSphere)。

我的标签 显示了特定专区您标记的标签(例如 Java technology,Linux,WebSphere)。

使用搜索文本框在 My developerWorks 中查找包含该标签的所有内容。热门标签 显示了特定专区最受欢迎的标签(例如 Java technology,Linux,WebSphere)。我的标签 显示了特定专区您标记的标签(例如 Java technology,Linux,WebSphere)。