Cómo agregar un JPanel a JFrame
Soy bastante nuevo en swing, así que no estoy seguro de cómo funciona esto. Estoy tratando de agregar un JPanel a un JFrame. Solo para tener una idea de los conceptos básicos, estoy imprimiendo una línea horizontal y el texto “Hola Mundo” encima.
import javax.swing.*;
import java.awt.Color;
import java.awt.Graphics;
public class GUI extends JFrame{
public GUI() {
setTitle("Frame");
setSize(500, 500);
setBackground(Color.black);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
setResizable(false);
}
public void paint(Graphics g) {
g.setColor(Color.GREEN);
g.drawLine(0, 250, 500, 250);
}
public static void main(String[] args) {
GUI g = new GUI();
JPanel panel = new JPanel();
JLabel label = new JLabel();
panel.setSize(500, 500);
panel.setBackground(Color.black);
label.setText("Hola Mundo");
label.setForeground(Color.green);
panel.add(label);
g.add(panel);
}
}
Por alguna razón, no puedo hacer que el JPanel se muestre.
davy.ai
Hay un par de errores en el código que impiden que el JPanel se muestre correctamente:
setVisible(true)
debería ser llamado después de agregar el panel al JFrame, no antes.El método
setSize()
debería ser llamado en el JFrame, no en el JPanel.Aquí está el código corregido:
Nota que el método
paint()
ha sido modificado para llamar asuper.paint(g)
primero, para asegurar que el JFrame se pinte correctamente antes de dibujar la línea.