I have written this code
package test;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Font;
import javax.swing.*;
import javax.swing.GroupLayout.Alignment;
public class MainFrame extends JFrame
{
private int levels;
private int slots;
private JLabel labelShowLevel;
private JFormattedTextField textShowLevel;
private JButton buttonShowLevel ;
private JLabel labelAddEntity ;
private JFormattedTextField textAddEntity ;
private JButton buttonAddEntity ;
private JComboBox cb;
private JLabel labelRemoveEntity ;
private JFormattedTextField textRemoveEntity ;
private JButton buttonRemoveEntity ;
private JLabel labelSearchEntity ;
private JFormattedTextField textSearchEntity ;
private JButton buttonSearchEntity ;
private JLabel labelEmptySlots ;
private JButton buttonEmptySlots ;
private JLabel levelDispaly;
private JLabel totalLevels;
public MainFrame(int levels, int slots)
{
this.levels = levels;
this.slots = slots;
getContentPane().add( CreatPanel(), BorderLayout.EAST);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setPreferredSize(new Dimension(1000,500));
this.revalidate();
this.repaint();
this.pack();
this.setVisible(true);
}
JPanel CreatPanel()
{
JPanel panel = new JPanel();
labelShowLevel = new JLabel("Display Level");
labelAddEntity = new JLabel("Enter new car/motorbike");
labelRemoveEntity = new JLabel("Exit car/motorbike");
labelSearchEntity = new JLabel("Find car/motorbike");
labelEmptySlots = new JLabel("Get total empty slots");
textShowLevel = new JFormattedTextField();
textAddEntity = new JFormattedTextField();
textRemoveEntity = new JFormattedTextField();
textSearchEntity = new JFormattedTextField();
textShowLevel.setPreferredSize(new Dimension(100, HEIGHT));
buttonShowLevel = new JButton("Show");
buttonAddEntity = new JButton("Enter");
buttonRemoveEntity= new JButton("Exit");
buttonSearchEntity = new JButton("Search");
buttonEmptySlots = new JButton("Find");
Font font = new Font("sans comic", Font.ITALIC, 18);
levelDispaly = new JLabel("Now Displaying Level 0");
levelDispaly.setFont(font);
totalLevels = new JLabel("Total Levels:"+ this.levels+" Total slots per level:"+this.slots);
String[] items = { "Car", "Motorbike" };
cb = new JComboBox(items);
cb.setSelectedItem(items[0]);
GroupLayout layout = new GroupLayout(panel);
panel.setLayout(layout);
layout.setAutoCreateGaps(true);
layout.setAutoCreateContainerGaps(true);
GroupLayout.SequentialGroup hGroup = layout.createSequentialGroup();
hGroup.addGroup(layout.createParallelGroup().
addComponent(labelShowLevel).addComponent(labelAddEntity).addComponent(labelRemoveEntity).addComponent(labelSearchEntity).addComponent(labelEmptySlots).addComponent(levelDispaly).addComponent(totalLevels));
hGroup.addGroup(layout.createParallelGroup().
addComponent(textShowLevel).addComponent(textAddEntity).addComponent(cb).addComponent(textRemoveEntity).addComponent(textSearchEntity));
hGroup.addGroup(layout.createParallelGroup().
addComponent(buttonShowLevel).addComponent(buttonAddEntity).addComponent(buttonRemoveEntity).addComponent(buttonSearchEntity).addComponent(buttonEmptySlots));
layout.setHorizontalGroup(hGroup);
layout.linkSize(SwingConstants.HORIZONTAL, buttonShowLevel, buttonAddEntity,buttonRemoveEntity,buttonSearchEntity,buttonEmptySlots);
// Create a sequential group for the vertical axis.
GroupLayout.SequentialGroup vGroup = layout.createSequentialGroup();
vGroup.addGroup(layout.createParallelGroup(Alignment.BASELINE).
addComponent(labelShowLevel).addComponent(textShowLevel).addComponent(buttonShowLevel));
vGroup.addGroup(layout.createParallelGroup(Alignment.BASELINE).
addComponent(labelAddEntity).addComponent(textAddEntity));
vGroup.addGroup(layout.createParallelGroup(Alignment.BASELINE).
addComponent(cb).addComponent(buttonAddEntity));
vGroup.addGroup(layout.createParallelGroup(Alignment.BASELINE).
addComponent(labelRemoveEntity).addComponent(textRemoveEntity).addComponent(buttonRemoveEntity));
vGroup.addGroup(layout.createParallelGroup(Alignment.BASELINE).
addComponent(labelSearchEntity).addComponent(textSearchEntity).addComponent(buttonSearchEntity));
vGroup.addGroup(layout.createParallelGroup(Alignment.BASELINE).
addComponent(labelEmptySlots).addComponent(buttonEmptySlots));
vGroup.addGroup(layout.createParallelGroup(Alignment.BASELINE).
addComponent(levelDispaly));
vGroup.addGroup(layout.createParallelGroup(Alignment.BASELINE).
addComponent(totalLevels));
layout.setVerticalGroup(vGroup);
return panel;
}
public static void main(String args[])
{
java.awt.EventQueue.invokeLater(new Runnable() {
public void run()
{
try
{
UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel");
}
catch (Exception ex) {
ex.printStackTrace();
}
(new MainFrame(5,5)).setVisible(true);
}
});
}
}
and the result is
What I want is to center the last two labels (totalLevels and levelDispaly) and make them take the three columns. I did many trials and faild. Note that the left side of the pane is empty because I have deleted the unnecessary parts of the code just to concentrate on the problem.