1

我在 JPanel 中有一个 JTabbedPane(顶部有水平选项卡),我希望这个 JTabbedPane 的选项卡适合 JPanel 的整个宽度,因此如果只有一个选项卡,则选项卡将填充整个宽度; 当有两个选项卡时,每个选项卡将恰好填充一半,依此类推。

使用自定义 JComponent 作为选项卡的标题并设置 PreferredSize 没有解决方案,因为 JTabbedPanel 似乎在标题组件周围放置了某种边框。

有没有比扩展和/或重写部分/全部 JTabbedPane 更简单的解决方案?

(也许我应该补充一点,当我谈论选项卡时,我指的是这些导航组件,您可以单击以切换显示的组件,而不是组件本身。)

4

1 回答 1

-1

测试这段代码:

public class Tabs extends javax.swing.JFrame {


    public Tabs() {
        initComponents();
    }


       private void initComponents() {

        jPanel1 = new javax.swing.JPanel();
        jTabbedPane1 = new javax.swing.JTabbedPane();
        jPanel2 = new javax.swing.JPanel();
        jPanel3 = new javax.swing.JPanel();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        jPanel1.setLayout(new java.awt.BorderLayout());

        jPanel2.setLayout(new java.awt.BorderLayout());


        jTabbedPane1.addTab("tab1", jPanel2);


        jPanel3.setLayout(new java.awt.BorderLayout());


        jTabbedPane1.addTab("tab2", jPanel3);

        jPanel1.add(jTabbedPane1, java.awt.BorderLayout.CENTER);

        add(jPanel1);

        pack();
    }


    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new Tabs().setVisible(true);
            }
        });
    }


    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel2;
    private javax.swing.JPanel jPanel3;
    private javax.swing.JTabbedPane jTabbedPane1;
}
于 2011-02-06T13:17:06.843 回答