Java 将JTabbedPane宽度设置为常量

Java 将JTabbedPane宽度设置为常量,java,swing,jtabbedpane,Java,Swing,Jtabbedpane,我正在用JavaSwing实现一个UI。 因此,我使用JTabbedPane。 选项卡窗格在启动时没有组件。将选项卡添加到选项卡窗格时,选项卡窗格的宽度会增加;移除选项卡时,宽度会调整为启动时的宽度。这不应该发生。 选项卡窗格放置在具有网格布局的JPanel上 布局代码: 希望有人能帮忙 你试过了吗 尝试将GridBagConstraints的ipadx值设置为所需的宽度。我一直认为应不惜一切代价避免GridBagLayout。它真的提供了通过将面板嵌套在其他布局中无法实现的功能。它唯一

我正在用JavaSwing实现一个UI。 因此,我使用
JTabbedPane
。 选项卡窗格在启动时没有组件。将选项卡添加到选项卡窗格时,选项卡窗格的宽度会增加;移除选项卡时,宽度会调整为启动时的宽度。这不应该发生。

选项卡窗格放置在具有网格布局的
JPanel

布局代码:


希望有人能帮忙

你试过了吗


尝试将
GridBagConstraints
ipadx
值设置为所需的宽度。

我一直认为应不惜一切代价避免GridBagLayout。它真的提供了通过将面板嵌套在其他布局中无法实现的功能。它唯一能带来的是很多挫折


我建议您使用BorderLayout将JTabbedPane放在面板中,并将其置于中间位置。如果您坚持使用GridBayLayout,您可以尝试使用setMinimumSize()方法,GridBagLayout是尊重该方法的布局管理器之一(BoxLayout是另一个)。

发布一些代码,显示您的GridBagLayout约束。请参阅此链接:-1 setSize永远不是布局问题的答案,这是LayoutManager的专有任务,但此任务不起作用,因为
ipadx
定义了x方向的填充。
Container contentPane = mainFrame.getContentPane();
contentPane.setLayout( new GridBagLayout() );
GridBagConstraints c = new GridBagConstraints();        
// add the component tree
initComponentTree();
c.gridx = 0;
c.gridy = 0;
c.gridheight = 1;
c.gridwidth = 1;
c.fill = GridBagConstraints.BOTH;
c.anchor = GridBagConstraints.LINE_START;
c.weightx = 1;
c.weighty = 1;
contentPane.add( componentTree, c );        
// add the tabbed pane
initTabbedPane();
c.gridx = 1;
c.weightx = 10;
contentPane.add( tabbedPane, c );       
// add the status panel
initStatusPanel();
c.gridx = 0;
c.gridy = 1;
c.gridwidth = 2;
c.fill = GridBagConstraints.HORIZONTAL;
c.anchor = GridBagConstraints.LINE_START;
c.weightx = 0;
c.weighty = 0;
contentPane.add( statusPanel, c );
JTabbedPane pane;
pane.setSize(SOME_WIDTH_CONSTANT, SOME_HEIGHT_CONSTANT);