2

我想知道如何从左侧开始设置 JTabbedPane 的选项卡位置。默认情况下,它们位于中心位置,因为我使用的是 Mac OS X。

如果您需要更多信息,请告诉我。

查看此图像以了解我使用默认 JTabbedPane 在我的 mac 中获得的内容:

在此处输入图像描述

4

1 回答 1

3

如果您的目标平台是 Mac,您很可能会遵循 OSX 的样式指南。 适用于 Mac 的 Java 开发指南。第 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 回答