No estoy de acuerdo con varios aspectos de la respuesta de Kyle. Aquí está mi ejemplo, y explicaré mis cambios a continuación:
import javax.swing.JFrame; import javax.swing.JPanel; public class Frame1 extends JFrame { private JPanel pane = new JPanel(); public Frame1() { super("My Simple Frame"); setContentPane(pane); // Here, you can add content to the panel } public static void main(String[] args) { JFrame frame = new Frame1(); frame.pack(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); // optional: center on screen frame.setLocationRelativeTo(null); } }
Cosas importantes a tener en cuenta:
- Evite el posicionamiento absoluto siempre que sea posible. Swing utiliza administradores de diseño , que automáticamente dimensionan y posicionan sus componentes. Probablemente no debería llamar a
en un panel de nivel superior, y rara vez en cualquier componente:setBounds
sería la llamada adecuada. Puede usarsetPreferredSize
para dimensionar y posicionar automáticamente los componentes.pack()
- Establezca su propio panel de contenido. Esto le permite asumir mucho más sobre el comportamiento del panel y, por lo tanto, del marco, y le brinda mucha más flexibilidad.
- Construcción separada de la pantalla. El constructor de un marco debe diseñar el contenido del marco. No debe empaquetar ni mostrar el marco, y probablemente no debe establecer la operación de cierre predeterminada. Estos comportamientos deben reservarse para el método principal.
Y consejos generales de Java:
- ¿Cuáles son las diferencias entre los bootcamps de Nueva York, es decir, Startup Institute, Hacker School, App Academy, Flatiron School, Fullstack Academy, etc.? ¿Y cómo elegirías?
- El sitio web de WordPress comenzó a cargar un minuto, ¿cómo solucionarlo?
- ¿Cuáles son las limitaciones de WordPress y qué tipos de sitios no puedo crear con él?
- Cómo reducir el tiempo de carga de mi blog WorPress
- ¿Cuáles son los 5 principales lenguajes de programación utilizados en la industria actual?
- Importa solo lo que necesitas. No importe todo el paquete
si no lo necesita. (Pista: no lo haces)javax.swing
- Use los niveles de acceso apropiados. Los campos casi siempre deben ser privados. Los constructores a menudo deben ser públicos. Casi nunca debe usar el nivel de acceso predeterminado (sin modificador; “paquete privado”).