【问题标题】:How to move components to next line in FlowLayout?如何将组件移动到 FlowLayout 中的下一行?
【发布时间】:2016-12-01 15:28:39
【问题描述】:

我在设置为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();
    }
}

我也试过设置面板的宽度,但是不行!

【问题讨论】:

    标签: java swing layout-manager flowlayout


    【解决方案1】:

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

    setLayout(new FlowLayout(FlowLayout.LEFT));
    

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

    摆脱那种说法。

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

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

    如需更灵活的布局来计算合适的面板首选尺寸,请查看Wrap Layout。此类扩展 FlowLayout 以计算首选大小。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-31
      相关资源
      最近更新 更多