如何在GridBagLayout中插入多个面板

时间:2013-06-02 12:45:11

标签: java swing jframe jpanel gridbaglayout

我正在制作一个小型GUI,需要在JFrame中添加至少4个面板。我正在使用GridBagLayout。这些面板中的每一个都有一些不同长度的标签和文本区域。 我插入3帧作为:

    jf.add(panel1, BorderLayout.NORTH);
    jf.add(panel2, BorderLayout.CENTER);
    jf.add(panel4, BorderLayout.SOUTH);

这里jf是Frame。现在我还有一个Panel(Panel3),它必须介于panel2和panel4之间。请给我一些想法,我们如何插入3个以上的面板。 谢谢

2 个答案:

答案 0 :(得分:2)

将框架内容窗格的布局更改为BorderLayout以外的其他布局,并将面板添加到所需的位置。您应该使用1列和4行的GridLayout。由于您掌握了所有面板的GridBagLayout,如果您愿意,也可以使用GridBagLayout作为内容窗格。

答案 1 :(得分:0)

首先,您使用的是 BorderLayout ,而不是 GridBagLayout 。实际上,使用GridBagLayout时,只需认为你的Frame是Excell页面就很容易使用。我为初学者和专家写了一篇关于如何正确使用GridBagLayout的full and very useful guide

以下是代码:

package prueba;

import java.awt.*;
import javax.swing.*;

public class BlocPrueb extends JFrame{

JPanel container;   
JPanel panel1;
JPanel panel2;
JPanel panel3;
JPanel panel4;

GridBagLayout cockatoo;
GridBagConstraints c;

  public BlocPrueb(){

      JButton g = new JButton("JPanel1");
      JButton h = new JButton("JPanel2");
      JButton j = new JButton("JPanel3");
      JButton k = new JButton("JPanel4");

      cockatoo = new GridBagLayout();
      c = new GridBagConstraints();

      container = new JPanel();
      container.setLayout(cockatoo);

      panel1 = new JPanel();
      panel2 = new JPanel();
      panel3 = new JPanel();
      panel4 = new JPanel();


      //Will use BorderLayout in the panels, cause its a demostration but it works as well as if it was the only panel in the JFrame.
      panel1.setLayout(new BorderLayout());
      panel1.add(g);

      panel2.setLayout(new BorderLayout());
      panel2.add(h);

      panel3.setLayout(new BorderLayout());
      panel3.add(j);

      panel4.setLayout(new BorderLayout());
      panel4.add(k);

      c.gridx = 0;
      c.gridy = 0;
      c.fill = GridBagConstraints.BOTH;
      container.add(panel1, c);

      c.gridx = 1;
      c.gridy = 0;
      container.add(panel2, c);

      c.gridx = 2;
      c.gridy = 0;
      container.add(panel3, c);

      c.gridx = 3;
      c.gridy = 0;
      container.add(panel4, c);

      getContentPane().add(container);
      setDefaultCloseOperation(EXIT_ON_CLOSE);
      setTitle("Cockatoo Panels inside a JFrame (GridBagLayout)");
      pack();
      setResizable(true);
      setLocationRelativeTo(null);
      setVisible(true);

  } 

    public static void main (String args[]){

        BlocPrueb v = new BlocPrueb();

}


}

这就是你应该得到的: JPanels using GridBagLayout

相关问题