gpt4 book ai didi

java - JTabbedPane 为什么只有当我有多个选项卡时才会有额外的填充? (代码和图片)

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:27:52 24 4
gpt4 key购买 nike

我有一个 JTabbed Pane ,它有不同数量的选项卡。当标签数量大于 4 时,我会在每个标签面板的底部获得额外的间距/填充。下图显示了这一点(在左侧您可以看到额外的间距,在右侧您可以看到没有额外的间距)。

enter image description here

这是我用来获取这些图片的确切代码:

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

我尝试过很多东西,包括许多不同的布局管理器。我这辈子都无法摆脱那个额外的间距。任何帮助都会很棒。

最佳答案

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

另一个示例的行为如此的原因是 Pane 将选项卡换行到下一行并假定一旦我们超出了它可能自然显示在一行中的尽可能多的选项卡,它必须增加首选大小包括额外的选项卡行。

关于java - JTabbedPane 为什么只有当我有多个选项卡时才会有额外的填充? (代码和图片),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19143362/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com