Самый простой способ заставить Swing-JTabbedPane-Tabs заполнить всю ширину их контейнера - PullRequest
1 голос
/ 06 февраля 2011

У меня есть JTabbedPane (с горизонтальными вкладками вверху) в JPanel, и я хочу, чтобы вкладки этого JTabbedPane соответствовали всей ширине JPanel, так что если есть только одна вкладка, вкладка будет заполненався ширина;когда есть две вкладки, каждая вкладка будет заполнять ровно половину и т. д.

Использование пользовательского JComponent в качестве заголовка вкладок и установка PreferredSize не является решением, так как кажется, что JTabbedPanelпомещает какую-то границу вокруг компонентов заголовка.

Есть ли более простое решение, чем расширение и / или перезапись части / всего JTabbedPane?

(Может быть, я должен добавить это, когда яГоворя о вкладках, я имею в виду эти навигационные компоненты, по которым можно переключать показанный компонент, а не сами компоненты.)

1 Ответ

0 голосов
/ 06 февраля 2011

Проверьте этот код:

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