Posterior a investigar con especialistas en el tema, programadores de varias ramas y maestros hemos dado con la solución al problema y la dejamos plasmada en este post.
Solución:
El diseño predeterminado en un JFrame
es un BorderLayout
. llamando al add
método en un Container
con tal diseño es equivalente a una llamada add(..., BorderLayout.CENTER)
. Cada una de las ubicaciones de los BorderLayout
puede contener un solo elemento. Por lo tanto, hacer dos llamadas
mainframe.add(jb);
mainframe.add(link);
da como resultado un CENTRO que contiene el último componente que agregó. Si desea evitar esto, puede agregarlo a diferentes ubicaciones o usar otro administrador de diseño (por ejemplo, un FlowLayout
) llamando JFrame#setLayout
En lugar de agregar componentes directamente al JFrame, use un JPanel como contenedor con el LayoutManager deseado.
Aquí puede encontrar varios tutoriales sobre administradores de diseño.
Básicamente, en Swing, el LayoutManager es responsable de diseñar los componentes secundarios (estableciendo su posición y su tamaño), por lo que cada componente contenedor que use dentro de su aplicación debe configurarse con el LayoutManager apropiado.
Agregue sus componentes a un JPanel y luego agregue ese panel al ContentPane de JFrame.
JFrame window = new JFrame();
JPanel mainframe = new JPanel();
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.setBounds(0,0,200,200);
JButton jb = new JButton();
jb.setText("Leech");
mainframe.add(jb);
JTextField link = new JTextField(50);
mainframe.add(link);
window.getContentPane().add(mainframe);
window.pack();
window.setVisible(true);
Si te gustó nuestro trabajo, tienes la habilidad dejar una división acerca de qué le añadirías a esta noticia.