Java 如何将这些标签准确放置在所需位置
我正在尝试创建一个带有一些标签和TXT区域的小型GUI。我是通过绝对定位来实现的,但我想继续gridbag布局。过去三天我一直在试,但没能按要求得到这些标签。要么是在中间盘旋,要么是在边境附近。请帮助他们进入这些位置 public void initUIPanel() { 它把所有的东西都放在两行里,都搞砸了。 我想要的是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: .....
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);
}
});
}
}