Tengo un componente personalizado que amplía JComponent, que anula el método paintComponent (Graphics g) pero cuando intento agregarlo a mi JPanel simplemente no funciona, no se dibuja nada. Aquí está mi código:JComponent no Drawing to JPanel
public class SimpleComponent extends JComponent{
int x, y, width, height;
public SimpleComponent(int x, int y, int width, int height){
this.x = x;
this.y = y;
}
@Override
public void paintComponent(Graphics g){
Graphics2D g2 = (Graphics2D) g;
g2.setColor(Color.BLACK);
g2.fillRect(x, y, width, height);
}
}
public class TestFrame{
public static void main(String[] args){
JFrame frame = new JFrame();
JPanel panel = new JPanel();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
panel.setPreferredSize(new Dimension(400, 400));
frame.add(panel);
frame.pack();
frame.setResizable(false);
SimpleComponent comp = new SimpleComponent(10, 10, 100, 100);
panel.add(comp);
frame.setVisible(true);
}
}
Eso es realmente extraño, he replicado este problema en Windows y Mac y siempre es exactamente el mismo – lilroo
Ah, el ancho y alto está establecido en cero – lilroo
Después de recordar establecer los campos de ancho y alto todavía no funcionaba pero cuando anulé el método getPreferredSize() funcionó. – lilroo