java - JTabbedPane 的选项卡位置

标签 java swing tabs jtabbedpane

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

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

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

enter image description here

最佳答案

如果您的目标平台是 Mac,您很可能会遵循 OSX 的风格指南。 Java Development Guide for Mac 。第 40 页讨论了选项卡式 Pane 。

默认情况下,您只能将选项卡放置在不同的一侧,例如:

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

但是,如果您希望将选项卡放在顶部,但调整到左侧而不是居中,则需要选择不同的外观和感觉,或者修改系统外观。这是可能的,但有点复杂,并且正如已经指出的那样,不推荐这样做。在显示任何内容之前,您必须执行所有更改。有关该主题的起点,请参阅 How to write a Custom Look and Feel

有关运行示例,请参阅代码:

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);
        }
    }
}

关于java - JTabbedPane 的选项卡位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13264927/

相关文章:

java - 在Java中复制一些文本后如何获取系统剪贴板图像?

java - 右键单击在 JFrame 上不起作用

tabs - Intellij 仅在复制期间将制表符转换为空格

java - Hibernate创建查询: How to loop over the result

java - Spring如何与Hibernate集成

java - 从我的 JButtons 获取颜色

android - Android 对选项卡的官方建议是什么?

android - Android View 寻呼机中的数据未更新

java - 安卓和 SQL Server

java - java.awt.graphics 中图形的自定义方法