java swing JTabbedPane位置选项卡标题从右到左

时间:2012-06-06 06:12:36

标签: java swing jtabbedpane

我想知道是否有可能将Tabbed窗格放在右下角, 我想把容器放到彼此之上,一个是从右上到右上方的tablabel(没有问题/默认),另一个是从右到左开始的底部的tablabel(到目前为止一样好)。 我想象的设计是:

| tab display                                 |
| tab display                                 |
| tab display                                 |
-----------------------------------------------
_________________________  | tab top | another|
| Bottom Tab| Second Tab|______________________
|                                              |
好吧,我的ascy绘图功能有限,但我希望你能得到它。 有什么办法,我可以在选项卡式窗格中添加布局管理器来布局标签吗?我在哪里可以找到这样的例子? Goodling建议将菜单栏与CardLayout结合使用,用于标签窗格。但是我不知道如何绘制菜单栏以使其看起来像标签。 (我只是偷看了自定义绘图的swingtrail,但它只是关于一般的可能性,除此之外,如果我这样做,我放弃了样式功能。我现在唯一能想到的就是使用没有内容的标签窗格和通过eventlisteners使其控制另一个具有卡片布局的容器。

有什么建议吗?

P.S。:我必须用java 1.6实现解决方案

2 个答案:

答案 0 :(得分:5)

在这种情况下,您可以为JTabbedPane设置ComponentOrientation

import java.awt.ComponentOrientation;
import java.awt.Dimension;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTabbedPane;
import javax.swing.JTextField;

public class TestTabbedPane extends JFrame {

    private static final long serialVersionUID = 1L;
    private JTabbedPane tabbedPane;

    public TestTabbedPane() {
        tabbedPane = new JTabbedPane();
        tabbedPane.setPreferredSize(new Dimension(300, 200));
        getContentPane().add(tabbedPane);
        JPanel panel = new JPanel();
        tabbedPane.add(panel, "null");
        JTextField one = new JTextField("one");
        tabbedPane.add(one, "one");
        JTextField two = new JTextField("two");
        //tabbedPane.add(two, "<html> T<br>i<br>t<br>t<br>l<br>e <br> 1 </html>");
        tabbedPane.add(two, "<html> Tittle  1 </html>");
        tabbedPane.setEnabledAt(2, false);
        tabbedPane.setTitleAt(2, "<html><font color="
                + (tabbedPane.isEnabledAt(2) ? "black" : "red") + ">"
                + tabbedPane.getTitleAt(2) + "</font></html>");
        tabbedPane.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);
        tabbedPane.setTabPlacement(JTabbedPane.BOTTOM);
    }

    public static void main(String args[]) {
        TestTabbedPane frame = new TestTabbedPane();
        frame.setDefaultCloseOperation(EXIT_ON_CLOSE);
        frame.pack();
        frame.setVisible(true);
    }
}

答案 1 :(得分:0)

使用setTabPlacement(JTabbedPane.TOP)方法检查 可用的是TOP,LEFT,BOTTOM,RIGHT

http://www.exampledepot.com/egs/javax.swing/tabbed_TpTabLoc.html