how can I align my components at JPanel at the center of JFrame.
Here are my codes and what i got
I want like this
(source: hizliresim.com)
MainFrame
import javax.swing.JFrame;
import javax.swing.JPanel;
public class MainFrame extends JFrame {
private static MainFrame instance = new MainFrame();
public static MainFrame getInstance() {
return instance;
}
public static void switchToPanel(JPanel p) {
getInstance().setContentPane(p);
getInstance().validate();
}
private MainFrame() {
setTitle("FavMovies");
setSize(400, 400);
setLocationRelativeTo(null);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
MainFrame.switchToPanel(new LoginPanel());
}
}
LoginPanel
import javax.swing.*;
import net.miginfocom.swing.MigLayout;
public class LoginPanel extends JPanel {
// PROPERTIES
private JTextField inputUsername;
private JPasswordField inputPassword;
// CONSTRUCTOR
public LoginPanel() {
setSize(400,400);
// COMPONENTS
inputUsername = new JTextField(10);
inputPassword = new JPasswordField(10);
JButton loginButton = new JButton("Login");
JButton createButton = new JButton( "Create User");
setLayout(new MigLayout());
// first row
add(new JLabel( "Username: "));
add(inputUsername, "wrap 5");
// second row
add(new JLabel( "Password: "));
add(inputPassword, "wrap 10");
// final row
add(loginButton);
add(createButton);
}
}
I hope I could explain :( I hope I could explain :( I hope I could explain :( I hope I could explain :(
The
GridBagLayout
will center components automatically. So set the layout of the frame to use aGridBagLayout
and then just add your login panel to the frame:Edit:
It looks like you are adding a component to a visible GUI. So you need to manually invoke the layout manager and repaint the component.
The structure of your code is really complicated. You should read the Swing tutorial for better examples and you won't have this problem. Maybe start with the
LabelDemo
from How to Use Labels.If you need the ability to swap panels, then take a look at the section from the Swing tutorial on
How to Use CardLayout
, which was designed for this purpose.