I'm having some issues with setting layouts. (Don't mind the sizes of the buttons, I just want to understand layouts properly).
Here is the window that I want to make:
Here is the window I tried:
Here's my code:
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
class Grid extends JFrame
{
private JTextField t1;
private JTextField t2;
private JCheckBox c1;
private JCheckBox c2;
private JButton b1;
private JButton b2;
private JButton b3;
private JPanel ButtonPanel1;
private JPanel ButtonPanel2;
private JPanel ButtonPanel3;
private JPanel CheckPanel1;
private JPanel CheckPanel2;
private JPanel TextPanel1;
private JPanel TextPanel2;
private JPanel EastPanel;
private JPanel CenterPanel;
private JPanel WestPanel;
private JLabel l1;
private JLabel l2;
public Grid()
{
//CheckBoxes
c1 = new JCheckBox("Snap to Grid");
c2 = new JCheckBox("Show Grid");
CheckPanel1 = new JPanel();
CheckPanel1.add(c1);
CheckPanel2 = new JPanel();
CheckPanel2.add(c2);
WestPanel = new JPanel(new GridLayout(2,1));
WestPanel.add(c1);
WestPanel.add(c2);
add(WestPanel,BorderLayout.WEST);
//I don't get how to arrange the labels aligned with the textfields.
//TextFields
l1 = new JLabel("X:");
t1 = new JTextField("8",3);
l2 = new JLabel("Y:");
t2 = new JTextField("8",3);
TextPanel1 = new JPanel();
TextPanel1.add(l1);
TextPanel1.add(t1);
TextPanel2 = new JPanel();
TextPanel2.add(l2);
TextPanel2.add(t2);
CenterPanel = new JPanel(new GridLayout(2,1));
CenterPanel.add(l1);
CenterPanel.add(l2);
CenterPanel.add(t1);
CenterPanel.add(t2);
add(CenterPanel,BorderLayout.CENTER);
// Buttons
b1 = new JButton("Ok");
b2 = new JButton("Cancel");
b3 = new JButton("Help");
ButtonPanel1 = new JPanel();
ButtonPanel1.add(b1);
ButtonPanel2 = new JPanel();
ButtonPanel2.add(b2);
ButtonPanel3 = new JPanel();
ButtonPanel3.add(b3);
EastPanel = new JPanel(new GridLayout(3,1));
EastPanel.add(ButtonPanel1);
EastPanel.add(ButtonPanel2);
EastPanel.add(ButtonPanel3);
add(EastPanel, BorderLayout.EAST);
}
}
public class oottest {
public static void main(String[] args) {
Grid app = new Grid();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
app.setSize(300,150);
app.setVisible(true);
}
}
Can anyone help me understand how layout works?
I have been watching lots of videos and tried different layouts but still can't get it right. Tell me if I used the correct layout or if I should change it.