Estoy escribiendo una aplicación que tomará información del usuario como el nombre, correo electrónico, contraseña. Para obtener la información del usuario, estoy usando JTextFields. Me gustaría tener todos los componentes en el centro de la pantalla vertical y horizontalmente, y también tener los componentes apilados uno tras otro de la siguiente manera: Diseño esperado
Como lo verías en un sitio web. Actualmente estoy usando un JPanel dentro de un JFrame, el JPanel tiene un BoxLayout con un BoxLayout.Y_AXIS. Aquí está mi código:
public class RegisterLayout extends Layout { @Override public void init() { this.setBackground(Utilities.babyBlueish); this.setBorder(BorderFactory.createTitledBorder("Register Now!")); this.setLayout(new BoxLayout(this, BoxLayout.Y_AXIS)); } @Override public void addComponents() { JTextField fName = new JTextField("Enter Your Full Name"); fName = Utilities.designTextField(fName); JButton submit = new JButton("Submit"); submit = Utilities.designButton(submit); submit.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { } }); this.add(fName); this.add(submit); } }Tanto init() como addComponents() se llaman cuando se agrega JPanel al panel de contenido de JFrame. "RegisterLayout extiende Layout" y "Layout extiende JPanel". Actualmente, con el código que tengo, mi programa se ve así: Diseño actual . Como puede ver, JTextField está descentrado con la pantalla horizontalmente y, en general, no está centrado verticalmente.
Si alguien pudiera ayudar, se lo agradecería. Si necesita más detalles, por favor hágamelo saber.
Hay varias formas de codificar este diseño. Esta es una forma.
Divida las secciones de la GUI en unidades lógicas, 'una columna de campos de texto', 'un área para controles de formulario', etc., luego proporcione un contenedor con un diseño adecuado para cada uno.
En esta maqueta de GUI:
Se podrían aplicar bordes adecuados (por ejemplo, un borde vacío, que es invisible) a los contenedores para espacios en blanco.