java - 如何将组件移动到 FlowLayout 中的下一行?

标签 java swing layout-manager flowlayout

我在设置为 FlowLayoutJPanel 中添加组件,即使该行的左边没有空格,它们也不会移动到下一行。 Here is the screenshot of the problem

import javax.swing.*;
import java.awt.*;
import javax.swing.border.BevelBorder;
import javax.swing.border.TitledBorder;
public class GUI extends JFrame
{
    private JLabel jlfname;
    private JPanel p1;
    private JTextField t1;
    private JLabel jllname;
    private JTextField t2;
    private JLabel jltitle;
    private JTextField t3;
    GUI()
    {
        jlfname=new JLabel("First Name : ");
        p1=new JPanel();
        TitledBorder titled = new TitledBorder("Name");
        p1.setBorder(titled);
        t1=new JTextField(10);
        jllname=new JLabel("Last Name : ");
        t2=new JTextField(10);
        jltitle=new JLabel("Title : ");
        t3=new JTextField(10);
        //Add in Pannel
        p1.setLayout(new FlowLayout());
        p1.add(jlfname);
        p1.add(t1);
        p1.add(jllname);
        p1.add(t2);
        p1.add(jltitle);
        p1.add(t3);
        //Add in Frame
        add(p1);
        setSize(550,500);
        setTitle("JFrame Tutorial");
        setLocationRelativeTo(null);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLayout(new FlowLayout(FlowLayout.LEFT));
        setResizable(false);
        setVisible(true);
    }
    public static void main(String [] args)
    {
        new GUI();
    }
}

我也尝试过设置面板的宽度,但它不起作用!

最佳答案

FlowLayout 旨在根据在一行中显示的所有组件计算其首选大小。 FlowLayout 还尊重组件的首选大小。

setLayout(new FlowLayout(FlowLayout.LEFT));

您正在覆盖框架的默认布局管理器,因此现在框架将遵循添加到框架的面板的首选大小,这意味着所有组件都将显示在一行上。

去掉那个语句。

现在组件将能够包裹在可用空间中,因为默认情况下面板将添加到 BorderLayout.CENTER,它会占用框架中的所有可用空间。

然而,上述解决方案仅在将组件添加到 BorderLayout 的 CENTER 时才有效。通常,您不应使用 setSize(),而应使用 pack() 来使所有框架以其首选大小显示。

要获得更灵活的布局来计算面板的适当首选尺寸,请查看 Wrap Layout .此类扩展 FlowLayout 以计算首选大小。

关于java - 如何将组件移动到 FlowLayout 中的下一行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40914492/

相关文章:

java - 为什么字符串 "getPriceDisplay"不会出现在我的 JTextField "totalTextField"中?

java - 从 Java 中的哈希表填充 JTable

Java程序使用插件类型结构,需要反馈正确的设计模式

java - 使 JPanel 比例适合宽度但保持固定高度

java - 如何使用 java 反射返回包含对象以外的内容的集合

java - 将指针传递给指针以通过 JNA 从 Java float 到 C 动态库

java - 什么是NullPointerException,我该如何解决?

java - 有没有办法从 Oracle Commerce(ATG) 中的文件系统加载组件?

java - 尝试自学 Java GUI (Swing),应该是一个简单的解决方案

java - 创建具有固定纵横比的自定义 JComponent