当前位置: 首页 > 知识库问答 >
问题:

GridBagLayout组件的位置不工作

巴帅
2023-03-14

嗨,我是java初学者,正在使用GridBagLayout制作小型GUI。请参阅附带的代码和输出。我想要的是按照gridx和gridy中分配的位置将JButtons放置在左上角。但它把组件放在中心,而不是像预期的左上角,如果我使用插图,gridx/Gridy所有的工作,但不是从适当的坐标,所以请看附上的代码和图像,并指导我关于它

public  rect()
{     

      JPanel panel = new JPanel( new GridBagLayout());
      GridBagConstraints gbc = new GridBagConstraints();
      JButton nb1= new JButton("Button1  ");
      JButton nb2= new JButton("Button2  ");

      gbc.gridx=0;
      gbc.gridy=0 ;
      panel.add(nb1, gbc);
      gbc.gridx=1;
      gbc.gridy=1; 
      panel.add(nb2, gbc);
      panel.setVisible(true);
      JFrame  frame = new JFrame("Address Book "); 
      frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
      frame.setSize(300, 300 );
      frame.add(panel);

      frame.setVisible(true); 


}

输出:想要左上角的按钮,请指点

共有1个答案

段干跃
2023-03-14

我认为问题更多的是setsize(..)的使用,您应该在将所有组件添加JFrame之后,并且在设置JFramevisible之前,使用适当的LayoutManager并在JFrame实例上调用Pack(),也不需要Panel.setVisible(..):

public static void main(String[] args) {

    SwingUtilities.invokeLater(new Runnable() {
        @Override

        public void run() {
            JPanel panel = new JPanel(new GridBagLayout());

            JButton nb1 = new JButton("Button1  ");
            JButton nb2 = new JButton("Button2  ");

            GridBagConstraints gbc = new GridBagConstraints();

            gbc.gridx = 0;
            gbc.gridy = 0;
            panel.add(nb1, gbc);

            gbc.gridx = 1;
            gbc.gridy = 1;
            panel.add(nb2, gbc);

            JFrame frame = new JFrame("Address Book ");
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

            frame.add(panel);

            frame.pack();
            frame.setVisible(true);
        }
    });
}
 类似资料:
  • 试图将我的旁边的表单与对齐,我正在努力将组件放到面板顶部。我需要价格标签和字段就在商品标签和字段下面,但我无法让它从面板底部移动。 如果我使用,这会将项目标签和字段移到顶部,但随后我就失去了用锚定它的能力。除非有办法两者兼得?请看我试图展示我想要放置表格的区域的图片。谢谢你的帮助。

  • 想要这样格式化它。灰色部分显示jpanel部分。最初,我想要正确地布局前2个jpanel。这是行不通的。怎么修?

  • 我正在尝试使用,但没有得到我所期望的结果,并且在此代码中找不到错误: 这张图说明了我需要: 黄色是按钮名称,红色是行和列。 谁能解释一下我的代码出了什么问题吗?

  • 我使用了绝对定位(setBounds和null布局),现在开始练习布局管理器,这段代码是用gridbag布局的,但是很少组件没有显示,或者是单元格有一些问题,或者是其他的东西,请帮助!

  • 我正在尝试创建以下GUI: 但我制作的GUI是: 我的网格是什么样子的: Image:此文件的GRIDLAYOUT addComp adds方法在给定的(x,y)位置和给定的组件宽度和高度处将输入组件添加到输入面板。 代码:

  • 有没有办法在交替列0、2、4、6中设置组件,而不使用GridBagConstraint在GridBagLayout中填充1、3、5的空组件? Java中的示例将第5个按钮设置为从第1列开始,但可能是因为它上面的行已经设置了? https://docs.oracle.com/javase/tutorial/uiswing/layout/gridbag.html