2

JTabbedPaneのタブの位置を左から設定するにはどうすればよいですか。MacOSXを使用しているため、デフォルトでは中央の位置にあります。

さらに詳しい情報が必要な場合はお知らせください。

この画像を参照して、デフォルトのJTabbedPaneを使用してMacに何が表示されるかを確認してください。

ここに画像の説明を入力してください

4

1 に答える 1

3

ターゲット プラットフォームが Mac の場合、OSX のスタイル ガイドに従う可能性が高くなります。 Mac 用 Ja​​va 開発ガイド。ページ 40 では、タブ付きペインについて説明しています。

デフォルトでは、タブを異なる側にのみ配置できます。次に例を示します。

            // Alternative placements: 
            // JTabbedPane.TOP 
            // JTabbedPane.RIGHT 
            // JTabbedPane.LEFT 
            // JTabbedPane.BOTTOM.
            tabbedPane.setTabPlacement(JTabbedPane.TOP);

ただし、タブを上に配置したいが、中央ではなく左に調整したい場合は、別のルック アンド フィールを選択するか、システムのルック アンド フィールを変更する必要があります。これは可能ですが、もう少し複雑であり、すでに指摘したように、お勧めできません。何かを表示する前に、すべての変更を実行する必要があります。このトピックの開始点については、カスタム ルック アンド フィールの作成方法を参照してください。

実行例については、コードを参照してください。

import java.awt.*;

import javax.swing.*;

public class Tab {

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                JFrame frame = new JFrame("TabbedPane");
                frame.getContentPane().add(new TabView());
                frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
                frame.setMinimumSize(new Dimension(800, 450));
                frame.setLocationRelativeTo(null); // Center
                frame.pack();
                frame.setVisible(true);
            }
        });
    }

    static class TabView extends JPanel {

        private JTabbedPane tabbedPane;

        TabView() {
            createComponents();
            makeLayout();
        }

        private void createComponents() {
            tabbedPane = new JTabbedPane();
            tabbedPane.addTab("Hello", new JLabel("World"));
            tabbedPane.addTab("Goodbye", new JLabel("Sunshine"));
        }

        private void makeLayout() {
            setLayout(new BorderLayout());

            // Alternative placements: JTabbedPane.TOP, JTabbedPane.RIGHT, JTabbedPane.LEFT JTabbedPane.BOTTOM.
            tabbedPane.setTabPlacement(JTabbedPane.TOP);
            // Alternative layout policies: JTabbedPane.WRAP_TAB_LAYOUT or JTabbedPane.SCROLL_TAB_LAYOUT.
            tabbedPane.setTabLayoutPolicy(JTabbedPane.WRAP_TAB_LAYOUT);

            add(tabbedPane, BorderLayout.CENTER);
        }
    }
}
于 2012-11-07T08:27:37.893 に答える