java - JTextField 的固定高度和宽度

标签 java swing layout-manager

我最近一直在使用 Java Swing,当我尝试在彼此下方添加 3 个 JTextField 时,它们会填充整个 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 不会根据窗口的大小进行调整。

目前,它看起来像这样:
Current look .

但它应该看起来像:
Expected look .

最佳答案

enter image description here

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

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

Combinations of different layouts制作 GUI 时经常使用。这个想法是让每个处理整个用户界面的一小部分布局需求。这是该答案的屏幕截图,其中通过每个布局的标题边框列出了所使用的布局。

enter image description here

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

关于java - JTextField 的固定高度和宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57851449/

相关文章:

java - 这个递归有什么意义呢?

java - 用于 API 不同部分的多个 ObjectMapper

java - JTextArea - 双击/三次单击 + 移动鼠标的选择行为

java - 文本区域未随按钮操作执行事件更新

java - 如何在GroupLayout中调整图像大小?

Java - Android - 如何使用 ID 以编程方式隐藏或显示控件

java - 控制 Mac 上 Java/Swing 中的按键使用

java - GUI JPanel 和 jframe 布局

java - TabbedPane 更改选项卡内的面板

java - 比较两个字符串(除了一个字符)的最简单方法是什么?