GridBagLayout - 调整行的高度

时间:2015-02-02 18:34:25

标签: java swing layout-manager gridbaglayout

我正在使用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 - 具有单个按钮的面板

0 个答案:

没有答案
相关问题