3

さまざまな数のタブを持つ JTabbed ペインがあります。タブの数が 4 を超えると、各タブ パネルの下部に余分なスペース/パディングが表示されます。下の図はこれを示しています (左側には追加のスペースが表示され、右側には追加のスペースが表示されていません)。

ここに画像の説明を入力

これらの写真を取得するために使用した正確なコードは次のとおりです。

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;

import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTabbedPane;

public class DialogTest {

    public static void main(String[] args) {
        new DialogTest();
    }

    public DialogTest() {
        JDialog dialog = new MyDialog();
        dialog.pack();
        dialog.setVisible(true);
    }

    class MyDialog extends JDialog {

        public MyDialog() {
            super(null, ModalityType.APPLICATION_MODAL);

            final JTabbedPane tabs = new JTabbedPane();
            final int numTabs = Integer.parseInt(JOptionPane.showInputDialog("Number of tabs:"));

            setPreferredSize(new Dimension(400, 200));

            for (int i = 1; i <= numTabs; i++) {
                tabs.addTab("Tab"+i, new MyPanel(i));
            }

            setLayout(new BorderLayout());
            add(tabs, BorderLayout.NORTH);
        }
    }

    class MyPanel extends JPanel {
        public MyPanel(int text) {
            final JLabel label = new JLabel("THIS IS A PANEL" + text);
            label.setFont(label.getFont().deriveFont(18f));
            label.setBackground(Color.cyan);
            label.setOpaque(true);

            add(label);
            setBackground(Color.red);
        }   
    }
}

多くの異なるレイアウトマネージャーを含む多くのことを試しました。私は一生、その余分なスペースを取り除くことはできません。どんな助けでも素晴らしいでしょう。

4

1 に答える 1

2
final JTabbedPane tabs = new JTabbedPane();
tabs.setTabLayoutPolicy(JTabbedPane.SCROLL_TAB_LAYOUT); // ADD THIS!

他の例がこのように動作する理由は、ペインがタブを次の行に折り返すためです。1 行に自然に表示されるタブの数を超えると、それを含めるために優先サイズを大きくする必要があると想定されます。タブの余分な行。

于 2013-10-02T17:56:14.187 に答える