【发布时间】:2013-12-04 14:05:24
【问题描述】:
我的 JPanels 有问题。我有 1 个主面板(GridBagLayout),里面有 4 个面板。我不想再看到中间的这个 *** 间隙,wrr!当我在面板上同时使用填充时,它可以工作,但是有一个问题,左侧的更多面板无法水平调整大小。所以我设置了左侧填充垂直的那些面板,以及右侧填充的那些面板。它工作正常,因为左侧没有调整大小,但我仍然在中间有这个间隙,当我调整框架的大小时,这个间隙的大小会从小变大;/
屏幕:http://i44.tinypic.com/smr42a.png
编辑: 当所有面板都在某个 Jpanel 中时,你能修复它吗(我使用的是 netbeans 设计模式,它强制添加主面板)
import java.awt.Color;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Example extends JFrame {
public static void main(String[] args) {
final JFrame f = new JFrame();
JPanel p0 = new JPanel();
JPanel p1 = new JPanel();
JPanel p2 = new JPanel();
JPanel p3 = new JPanel();
JPanel p4 = new JPanel();
p1.setBorder(BorderFactory.createTitledBorder("panel 1"));
p2.setBorder(BorderFactory.createTitledBorder("panel 2"));
p3.setBorder(BorderFactory.createTitledBorder("panel 3"));
p4.setBorder(BorderFactory.createTitledBorder("panel 4"));
p1.setBackground(Color.RED);
p2.setBackground(Color.GREEN);
p3.setBackground(Color.BLUE);
p4.setBackground(Color.CYAN);
f.getContentPane().setLayout(new GridBagLayout());
GridBagConstraints c = new GridBagConstraints();
c.gridx = 0;
c.gridy = 0;
c.ipadx = 50;
p0.add(p1,c);
c.gridy = 1;
c.fill = GridBagConstraints.VERTICAL;
c.weighty = 1;
p0.add(p2,c);
c.gridx = 1;
c.gridy = 0;
c.ipadx = 0;
c.fill = GridBagConstraints.HORIZONTAL;
c.weighty = 0;
c.weightx = 1;
p0.add(p3,c);
c.fill = GridBagConstraints.BOTH;
c.weighty = 1;
c.gridy = 1;
p0.add(p4,c);
f.add(p0);
f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
f.pack();
f.setVisible(true);
}
}
【问题讨论】:
-
请添加导致此行为的代码。在没有看到您尝试过的情况下进行调试是不可能的。
-
我正在使用 netbeans 设计模式,代码是 100 万行代码,没有提供任何内容。我刚刚尝试了许多布局管理器的变体,并使用了一些“胶水”、“支柱”,但我是无法将右面板粘贴到左面板并仅以东方式调整面板大小。我将尝试解释我想要实现的目标。我需要面板,它分为 4 个面板,如图所示。左面板应该有固定的大小(它是菜单)右面板是内容,所以它可以随时随地调整大小。