Java JTextField的固定高度和宽度

Java JTextField的固定高度和宽度,java,swing,layout-manager,Java,Swing,Layout Manager,我最近一直在使用JavaSwing,当我尝试在彼此下面添加3个JTextFields时,它们填充了整个JFrame。但我希望它们有一个固定的高度和宽度。我能做什么 因为我对这个话题还不熟悉,所以我没能尝试很多东西。我也没有在其他论坛找到任何东西 我的目标是制作一个简单的GUI,供用户填写他们的凭证。这些凭证应该填充到数组中,但我还没有得到 import javax.swing.*; import java.awt.*; import java.awt.event.*; public class

我最近一直在使用JavaSwing,当我尝试在彼此下面添加3个JTextFields时,它们填充了整个JFrame。但我希望它们有一个固定的高度和宽度。我能做什么

因为我对这个话题还不熟悉,所以我没能尝试很多东西。我也没有在其他论坛找到任何东西

我的目标是制作一个简单的GUI,供用户填写他们的凭证。这些凭证应该填充到数组中,但我还没有得到

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

public class PeopleGUI extends JFrame{
    JPanel jp = new JPanel();
    JLabel jl = new JLabel();
    JTextField jt = new JTextField(30);
    JTextField jt1 = new JTextField(30);
    JTextField jt2 = new JTextField(30);
    JButton jb = new JButton("Enter");

    public PeopleGUI(){
        setTitle("PeopleGUI");
        setVisible(true);
        setSize(400,200);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        jp.setLayout(new BoxLayout(jp, BoxLayout.Y_AXIS));

        jp.add(jt);
        jp.add(jt1);
        jp.add(jt2);

        jt.addActionListener(new ActionListener(){

            public void actionPerformed(ActionEvent e){
                String input = jt.getText();
                jl.setText(input);
            }
        });

        jp.add(jb);

        jb.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e){
                String input = jt.getText();
                jl.setText(input);
            }
        });

        jp.add(jl);
        add(jp);
    }

    public static void main(String[] args) {

        PeopleGUI p = new PeopleGUI();
    }
}
我希望JTextFields不适应窗口的大小

目前,情况如下:

但它应该看起来像:
.

您必须使用布局,例如BoxLayout。您将找到一些文档

通过将3个面板(每个面板都有一个居中的FlowLayout)放入一个单列GridLayout中,可以轻松复制该布局

重要的部分是FlowLayout,它将考虑所显示组件的首选大小

在制作GUI时经常使用。其想法是让每个人都能处理整个用户界面的一小部分布局需求。下面是该答案的屏幕截图,其中列出了使用的布局,每个布局都有标题边框


但是我认为如果标签的RHS和字段的LHS垂直对齐会更好。为此,请使用单个GridBagLayout。

其他提示:setVisibletrue;设置尺寸400200;1不要定尺寸,那只不过是猜测而已。添加所有组件,然后打包顶层容器。它将是最小的,同时仍然为它包含的内容分配足够的空间。2.始终使设置可见。。最后一次呼叫,通常在呼叫包之后。这将避免布局中出现工件,或GUI出现后大小发生变化。不确定为什么接受此答案。发布的代码确实使用了BoxLayout。问题是BoxLayout允许组件增长到其最大尺寸。按钮不会增长,因为其最大大小等于其首选大小。文本字段会增长,因为它们的最大大小更大。一种解决方案是使用FlowLayout将该面板包装成一个面板。然后将包裹的面板添加到框架中。也可以使用其他布局,如GridBagLayout。在这种情况下,教程链接有助于了解更多信息。