首页 文章

如何在GridBagLayout中插入多个面板

提问于
浏览
1

我正在制作一个小型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

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

  • 2

    首先,您使用的是 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

相关问题