2013-12-15 96 views
2

我想在OSX上的Java 7中制作一个JTabbedPane,其中的制表符位于左侧,文本水平(而不是垂直)。然而,随着代码:在左对齐上强制水平制表符文本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

我想的标签文本是水平(该选项卡上的“测试”称号水平取向而不是垂直取向)。

我在Google上搜索了一段时间,只遇到人们希望在他们的标签上实现垂直文本的事件,我无法找到任何人想要有横向文本(我正在尝试实现)。

特别是,我试图实现一些看起来像this问题的第一篇文章中提到的图像。这基本上与该问题完全相反,因为该标签中的人从我试图达到的目标开始(我相信)。基本上,我试图确定如何创建在该问题的第一篇文章中显示的图像。

有人能告诉我如何在保留水平制表标题(而不是垂直)的同时保留左向导标签?

谢谢你的时间和协助。

+0

1)为了更好地帮助更快,发布[SSCCE](http://sscce.org/)。 2)调用'pack()'总是有价值的。使用它而不是**'setSize(..)'.. –

+0

@AndrewThompson,感谢您为我发布图片,并发布了一个SSCCE(我希望,正确) – cryptopi

+0

即将前往睡觉,但我怀疑(确实希望)在我起床之前,某种灵魂会为你排序。好的SSCCE顺便说一句! –

回答

1

同样,因为我不能复制的问题,试试这个建议

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 
+0

感谢您的想法,但我试过了,结果可以在这里找到:http://我.imgur.com/Rw3JFiW.png。也就是说,它似乎具有文本水平的理想效果,但标签变得不够宽以显示所有文本。任何想法如何解决这个问题? – cryptopi

1

取向是由操作系统决定的。如果你想改变标签文本的对齐方式,你必须改变你的swing应用程序的外观和感觉。这对我有效。请参阅here

0

MacOSX的系统外观并不支持您想要的JTabbedPane。您必须创建一个自定义的JComponent来执行此操作,或者像@MonkeySupersonic之前所述的那样设置应用程序的外观和感觉以跨平台(java金属)。

我建议读数: