-1

How do you add a new line in java. I can change the width of the frame but if the user manually expands it, all the controls display on the same line.

import java.awt.*;
import javax.swing.*;
import javax.swing.JFrame;
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.LayoutManager;


public class test {
    
    public static void main(String[] args) {
        JFrame f = new JFrame("Hello");

        JPanel MyPanel = new JPanel();

        MyPanel.setLayout(new FlowLayout()); // Demo flow layout

        JLabel l1 = new JLabel("label 1");
        JTextField t1 = new JTextField(10);
        JLabel l2 = new JLabel("label 2");
        JTextField t2 = new JTextField(10);

        MyPanel.add(l1); // Add JButtons using Flow Layout
        MyPanel.add(t1);
        MyPanel.add(l2);
        MyPanel.add(t2);

        // Paste MyPanel in center of the contentPane  
        f.getContentPane().add(MyPanel, "Center");   
        f.setSize(400, 300);
        f.setVisible(true);
    }
}
Andrew Thompson
  • 168,117
  • 40
  • 217
  • 433
  • 1
    Your description of the problem describes how FlowLayout is supposed to work. I suggest familiarising yourself with the different [layout managers](https://docs.oracle.com/javase/tutorial/uiswing/layout/visual.html) that swing offers. See: `It simply lays out components in a single row, starting a new row if its container is not sufficiently wide` – byxor Feb 11 '21 at 16:59

1 Answers1

1

Thank you for the link! this works.

import java.awt.Container;  
import javax.swing.GroupLayout;  
import javax.swing.JLabel;  
import javax.swing.JTextField;  
import javax.swing.JFrame;  
import static javax.swing.GroupLayout.Alignment.*;  
public class test {  
    public static void main(String[] args) {  
        JFrame frame = new JFrame("GroupLayoutExample");  
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
        Container myPanel = frame.getContentPane();  
  
        GroupLayout groupLayout = new GroupLayout(myPanel);  
        groupLayout.setAutoCreateGaps(true);  
        groupLayout.setAutoCreateContainerGaps(true);  
        myPanel.setLayout(groupLayout);  
  
     JLabel l1 = new JLabel("label 1");
         JTextField t1 = new JTextField(10);
     JLabel l2 = new JLabel("label 2");
         JTextField t2 = new JTextField(10);
  
        groupLayout.setHorizontalGroup(groupLayout.createSequentialGroup()  
                .addGroup(groupLayout.createParallelGroup(LEADING).addComponent(l1).addComponent(l2))  
                .addGroup(groupLayout.createParallelGroup(TRAILING).addComponent(t1).addComponent(t2)));  
  
        groupLayout.setVerticalGroup(groupLayout.createSequentialGroup()  
                .addGroup(groupLayout.createParallelGroup(BASELINE).addComponent(l1).addComponent(t1))  
                .addGroup(groupLayout.createParallelGroup(BASELINE).addComponent(l2).addComponent(t2)));  
  
        frame.pack();  
        frame.setVisible(true);  
    }  
}