Merlin の魔術

タブ付きペインのスクロール

大き過ぎて収まりきらない場合にどうするか

Comments

コンテンツシリーズ

このコンテンツは全#シリーズのパート#です: Merlin の魔術

このシリーズの続きに乞うご期待。

このコンテンツはシリーズの一部分です:Merlin の魔術

このシリーズの続きに乞うご期待。

はじめに

JTabbedPane コントロールは、ユーザーが、自分の選択したタブに応じて、異なるコンポーネントにアクセスできるようにするコンテナーです。JTabbedPane を使ってユーザー・インターフェースを設計する場合、指定するタブが多数に及ぶことも珍しくありません。ユーザーの画面サイズが想定より小さいと問題が生じ、タブが複数行に折り返して表示されます。折り返すと、それぞれのタブのコンポーネントのために割り当てできる画面スペースが小さくなります。そのスペースは、JTabbedPane で表示する必要のあるタブの行数に従って小さくなります。ユーザー・インターフェースのエンジニアにとっては悪夢です。

図 1 は、UI エンジニアが設定した元の画面の表示例です。図 2 は、画面の幅が想定より小さいと、これがどうなるかを示しています。

図 1. 幅の広い単一行の JTabbedPane
幅の広い単一行の JTabbedPane
幅の広い単一行の JTabbedPane
図 2. 幅の狭い複数行の JTabbedPane
幅の狭い複数行の JTabbedPane
幅の狭い複数行の JTabbedPane

レイアウト方針の変更

Merlin リリースでは、JTabbedPane の新しいプロパティーである tabLayoutPolicy を設定することにより、この振る舞いを変更できます。リスト 1 に示すとおり、デフォルト設定を 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
幅の狭い単一行の JTabbedPane

横方向でなく、縦方向にタブをレイアウトする場合でも、このレイアウト方針が役に立ちます (図 4 参照)。

図 4. JTabbedPane を使って左側にタブを配置する場合
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();
  }
}

ダウンロード可能なリソース


関連トピック


コメント

コメントを登録するにはサインインあるいは登録してください。

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Java technology
ArticleID=218835
ArticleTitle=Merlin の魔術: タブ付きペインのスクロール
publish-date=09012001