Java 如何将这些标签准确放置在所需位置

Java 如何将这些标签准确放置在所需位置,java,jframe,layout-manager,gridbaglayout,Java,Jframe,Layout Manager,Gridbaglayout,我正在尝试创建一个带有一些标签和TXT区域的小型GUI。我是通过绝对定位来实现的,但我想继续gridbag布局。过去三天我一直在试,但没能按要求得到这些标签。要么是在中间盘旋,要么是在边境附近。请帮助他们进入这些位置 public void initUIPanel() { 它把所有的东西都放在两行里,都搞砸了。 我想要的是 First Line: Loan Amount: ............(txt Area).... "AUD" Second LIne: Loan Term: .....

我正在尝试创建一个带有一些标签和TXT区域的小型GUI。我是通过绝对定位来实现的,但我想继续gridbag布局。过去三天我一直在试,但没能按要求得到这些标签。要么是在中间盘旋,要么是在边境附近。请帮助他们进入这些位置

public void initUIPanel() {

它把所有的东西都放在两行里,都搞砸了。 我想要的是

First Line: Loan Amount: ............(txt Area).... "AUD"
Second LIne: Loan Term: .............(Txt Area......Years
然后是Txtbox


谢谢

您尚未设置面板的布局:

panel.setLayout(gbl);
而且,正如评论中所说,所有组件都有相同的gridx和gridy,这显然是不对的

下面是一个完整的示例,如果我理解正确,它符合您的要求:

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

public class GblTest extends JFrame {

    public GblTest() {
        add(createPanel(), BorderLayout.NORTH);
    }

    private JPanel createPanel() {
        JPanel p = new JPanel();
        p.setLayout(new GridBagLayout());

        GridBagConstraints c = new GridBagConstraints();
        c.gridx = 0;
        c.gridy = 0;
        c.anchor = GridBagConstraints.BASELINE_LEADING;
        p.add(new JLabel("Loan amount"), c);

        c.gridx++;
        p.add(new JTextField(15), c);

        c.gridx++;
        c.fill = GridBagConstraints.HORIZONTAL;
        c.weightx = 1.0;
        p.add(new JLabel("AUD"), c);

        c.gridx = 0;
        c.gridy++;
        c.fill = GridBagConstraints.NONE;
        c.weightx = 0.0;
        p.add(new JLabel("Loan term"), c);

        c.gridx++;
        p.add(new JTextField(15), c);

        c.gridx++;
        c.fill = GridBagConstraints.HORIZONTAL;
        c.weightx = 1.0;
        p.add(new JLabel("Years"), c);

        return p;
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                GblTest test = new GblTest();
                test.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
                test.pack();
                test.setVisible(true);
            }
        });
    }
}

您的代码根本不使用gridbaglayout。请向我们展示您尝试过的代码,并告诉我们您希望面板的外观以及实际外观。我已经编辑了我的帖子。请看一看。谢谢所有组件都将gridx和gridy设置为0,因此它们在网格中共享同一个单元格。很抱歉。但即使更改了任何设置,也会导致错误他们中的大多数不会改变GUI中的位置。这就是问题所在。谢谢。我想要的是“贷款金额”标签放在北/西角附近。但它只是在中心徘徊。我试着将面板放在“北”位置,但它挂在北面的中心。请看我编辑的答案。你必须告诉某个单元格水平放大,以便面板与左边对齐。谢谢你。我从未见过如此清晰的示例。就连我的导师也无法像你刚才那样解释。我感谢你的帮助。
import javax.swing.*;
import java.awt.*;

public class GblTest extends JFrame {

    public GblTest() {
        add(createPanel(), BorderLayout.NORTH);
    }

    private JPanel createPanel() {
        JPanel p = new JPanel();
        p.setLayout(new GridBagLayout());

        GridBagConstraints c = new GridBagConstraints();
        c.gridx = 0;
        c.gridy = 0;
        c.anchor = GridBagConstraints.BASELINE_LEADING;
        p.add(new JLabel("Loan amount"), c);

        c.gridx++;
        p.add(new JTextField(15), c);

        c.gridx++;
        c.fill = GridBagConstraints.HORIZONTAL;
        c.weightx = 1.0;
        p.add(new JLabel("AUD"), c);

        c.gridx = 0;
        c.gridy++;
        c.fill = GridBagConstraints.NONE;
        c.weightx = 0.0;
        p.add(new JLabel("Loan term"), c);

        c.gridx++;
        p.add(new JTextField(15), c);

        c.gridx++;
        c.fill = GridBagConstraints.HORIZONTAL;
        c.weightx = 1.0;
        p.add(new JLabel("Years"), c);

        return p;
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                GblTest test = new GblTest();
                test.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
                test.pack();
                test.setVisible(true);
            }
        });
    }
}