左对齐JTabbedPane上的强制水平制表符文本

时间:2013-12-15 01:44:34

标签: java swing jtabbedpane

我正在尝试在OSX上的Java 7中创建一个JTabbedPane,其标签位于左侧,文本水平(而不是垂直)。但是,使用代码:

import javax.swing.*;
import java.awt.Dimension;


class Probs extends JDialog {
    JTabbedPane options = new JTabbedPane();
    Probs(JFrame owner) {
        //main constructor
        super(owner, "User Preferences", true);
        //set the tabs to be left aligned
        options.setTabPlacement(JTabbedPane.LEFT);

        //construct the authorization panel
        JPanel authorization = new JPanel();
        authorization.add(new JLabel("test"));
        options.addTab("test", authorization);

        add(options);
        setSize(new Dimension(300,300)); //should use pack here
        setResizable(false);
        setLocationRelativeTo(null);
        setVisible(true);           
    }

    public static void main(String[] args) {
        JFrame test = new JFrame();
        new Probs(test);
        test.dispose();
    }
}

我看到一个类似于:this image

的对话框

我希望标签文本是水平的(标签上的'test'标题是水平定向而不是垂直定向)。

我在Google上搜索了一段时间,并且只遇到人们希望在他们的标签上获得垂直文字的事件,我无法找到任何人想要水平文本(我想要实现的目标) )。

特别是,我正在尝试实现与this问题的第一篇文章中提到的图像完全相同的内容。它基本上与那个问题完全相反,因为该标签中的人开始于我想要实现的目标(我相信)。基本上,我正在尝试确定如何创建在该问题的第一篇文章中显示的图像。

有人可以告诉我如何在保留水平标签标题(而不是垂直标签)的同时使用面向左侧的标签吗?

感谢您的时间和帮助。

3 个答案:

答案 0 :(得分:2)

同样,由于我无法复制问题,请尝试建议

    JPanel authorization = new JPanel();
    authorization.add(new JLabel("test"));
    options.addTab("", authorization);
    JLabel labTab2 = new JLabel("test");    // create a label
    options.setTabComponentAt(0, labTab2);  // set it to the component

答案 1 :(得分:1)

对齐方式由您的操作系统决定。如果要更改选项卡文本的对齐方式,则必须更改swing应用程序的外观。这对我有用。请参阅here

答案 2 :(得分:0)

MacOSX的系统外观并不支持您在JTabbedPane中所需的功能。您必须创建一个自定义的JComponent来执行此操作,或者将应用程序的外观设置为跨平台(java metal),如@MonkeySupersonic所述。

我建议阅读: