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

GridBagLayout不起作用

凌俊语
2023-03-14

我有一些代码生成以下内容:

我希望3、4和5个JTextFields在JLabels旁边,就像1和2一样。我的代码是尝试这样做,但上面的图像是结果。

有人能指出我代码中的问题吗?

import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JTextField;

import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;

 public class example{  
       public static void main(String[] args){

        JDialog jd = new JDialog();
    jd.setTitle("Example");
    GridBagLayout gl = new GridBagLayout();
    final JTextField j1 = new JTextField("1");
    final JTextField j2 = new JTextField("2");
    final JTextField j3 = new JTextField("3");
    final JTextField j4 = new JTextField("4");
    final JTextField j5 = new JTextField("5");
    jd.setLayout(gl);
    GridBagConstraints c = new GridBagConstraints();
    c.fill = GridBagConstraints.BOTH;
    c.weightx = 1.0;
    c.weighty = 1.0;
    c.gridx = 0;
    c.gridy = 0;
    jd.add(new JLabel("TextField 1: "), c);
    c.gridx = 1;
    jd.add(j1,c);
    c.gridx = 0;
    c.gridy++;
    jd.add(new JLabel("TextField 2: "), c);
    c.gridx = 1;
    c.gridy=1;
    jd.add(j2,c);
    c.gridx = 0;
    c.gridy++;
    jd.add(new JLabel("TextField 3: "), c);
    c.gridx = 1;
    jd.add(j3);
    c.gridx = 0;
    c.gridy++;
    jd.add(new JLabel("TextField 4: "), c);
    c.gridx = 1;
    jd.add(j4);
    c.gridx = 0;
    c.gridy++;
    jd.add(new JLabel("TextField 5: "), c);
    c.gridx = 1;
    jd.add(j5);


    jd.pack();
    jd.setVisible(true);
       }
 } 

共有1个答案

归俊杰
2023-03-14
jd.add(j3);    // **** here
c.gridx = 0;
c.gridy++;
jd.add(new JLabel("TextField 4: "), c);
c.gridx = 1;
jd.add(j4);    // **** here
c.gridx = 0;
c.gridy++;
jd.add(new JLabel("TextField 5: "), c);
c.gridx = 1;
jd.add(j5);    // **** here

您没有在几个add(...)方法调用中使用GridBagConstraints。如果您不告诉GridBagLayout如何放置组件,那么它将无法工作,解决方案正如您所期望的那样,在使用GBL的容器中添加组件时使用constraints对象。

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

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

  • 我的GridbagLayout有些问题。我创建了一个JPanel(在本例中称为mainPanel),它的布局被设置为GridBagLayout。我已经为每个JButton指定了约束,并将约束添加到每个Button。现在,当我运行代码时,按钮总是紧挨着的,而不考虑我在约束中指示的Gridx/Gridy值。此外,按钮总是位于JFrame的中心,我希望一个按钮出现在右上角、左上角和南边。 这是我运行代码

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

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

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