How do I align each Label next to its Textfield in Java?

Viewed 397

Misaligned fields

What i want.

My code-

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

 class Test2 extends JFrame {

JPanel panel = new JPanel();
JLabel label1 = new JLabel("Enter 1st Number");
JLabel label2 = new JLabel("Enter 2nd Number");
JLabel label3 = new JLabel("Press to add");
JLabel label4 = new JLabel("Check Answer");
JButton button = new JButton("Press");
JTextField text1 = new JTextField(50);
JTextField text2 = new JTextField(50);

public Test2() {
    setTitle("Tutorial");
    setVisible(true);
    setSize(1080, 720);
    setDefaultCloseOperation(EXIT_ON_CLOSE);

    text1.setBounds(90,60,86,23);
    text2.setBounds(233,60,92,23);
    button.setBounds(161,109,89,23);

    panel.add(text1);
    panel.add(text2);
    panel.add(button);
    panel.add(label1);
    panel.add(label2);
    panel.add(label3);
    panel.add(label4);

    add(panel);
}

public static void main(String[] args) {
    Test2 t = new Test2 ();

 }
}

I am also going to write the code to add the 2 numbers and if a user enters letters, i am also gonna throw an exception. But i want them to align first. I can not use GUI form as this is for practice.

2 Answers

Don't use setBounds().

use Grid Layout of 4 rows and 2 columns

you need to use a Gridlayout with 2 columns and 4 rows to make them like that:

class Test2 extends JFrame {

    JPanel panel = new JPanel();
    JLabel label1 = new JLabel("Enter 1st Number");
    JLabel label2 = new JLabel("Enter 2nd Number");
    JLabel label3 = new JLabel("Press to add");
    JLabel label4 = new JLabel("Check Answer");
    JButton button = new JButton("Press");
    JTextField text1 = new JTextField(50);
    JTextField text2 = new JTextField(50);

    public Test2() {
        GridLayout gb = new GridLayout(4, 2);
        panel.setLayout(gb);
        panel.add(label1);
        panel.add(text1);
        panel.add(label2);
        panel.add(text2);
        panel.add(label3);
        panel.add(button);
        panel.add(label4);
        
        add(panel);
        
        setTitle("Tutorial");
        setVisible(true);
        setSize(250, 150);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        
    }

    public static void main(String[] args) {
        Test2 t = new Test2();
    }
}

output: panel

Related