我正在使用GridBagLayout
为包含其他几个面板的面板开发GUI。其中一个面板只包含一个按钮。我希望它在上面两个面板之后水平显示,而不是占据高度超过按钮的高度。
但不知何故,我的网格被分成相等高度的行,按钮行的高度几乎是自身的十倍。
作为Swing的新手,我无法解决这个问题。请建议我解决这个问题。
以下是源代码:
class SplitPane extends JFrame {
private static JPanel panel2;
private static JPanel panel5;
private static JScrollPane panel3;
private static JScrollPane panel4;
protected JSplitPane split;
public SplitPane(JChemPaintPanel p){
JFrame f = new JFrame("");
//f.setLayout(new GridLayout(3, 2, 10, 10 ));
// f.addWindowListener(new JChemPaintPanel.AppCloser());
// f.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setPreferredSize(new Dimension(800, 800));
JPanel pane = new JPanel(new GridBagLayout());
GridBagConstraints c = new GridBagConstraints();
c.gridx=0;
c.gridy=0;
c.fill=GridBagConstraints.BOTH;
c.weightx=1;
c.weighty=1;
c.gridheight=1;
c.gridwidth=1;
p.setPreferredSize( new Dimension( 100, 100 ) );
p.setMaximumSize(new Dimension(100, 100));
pane.add(p, c);
c.gridx=1;
c.gridy=0;
c.fill=GridBagConstraints.BOTH;
c.weightx=1;
c.weighty=1;
c.gridheight=1;
c.gridwidth=1;
pane.add(createPanel2(), c);
c.gridx=0;
c.gridy=1;
c.gridheight=1;
c.weightx=1;
c.weighty=1;
c.gridwidth=GridBagConstraints.REMAINDER;
c.anchor=GridBagConstraints.CENTER;
c.fill=GridBagConstraints.HORIZONTAL;
pane.add(createPanel5(), c);
c.gridx=0;
c.gridy=2;
c.gridheight=1;
c.gridwidth=1;
c.fill=GridBagConstraints.BOTH;
c.weightx=1;
c.weighty=1;
pane.add(createPanel3(), c);
c.gridx=1;
c.gridy=2;
c.gridheight=1;
c.gridwidth=1;
c.fill=GridBagConstraints.BOTH;
c.weightx=1;
c.weighty=1;
pane.add(createPanel4(), c);
f.add(pane);
f.pack();
Point point = GraphicsEnvironment.getLocalGraphicsEnvironment().getCenterPoint();
import java.awt.BorderLayout;
int w2 = 1000;
int h2 = 1000;
f.setLocation(point.x - w2, point.y - h2);
f.setVisible(true);
}
CreatePanel2 - 是一个简单的文本编辑器 CreatePanel3 - 具有可滚动表 CreatePanel4 - 另一个可滚动表 CreatePanel5 - 具有单个按钮的面板