Mam niestandardowy komponent, który rozszerza JComponent, który przesłania metodę paintComponent (Graphics g), ale kiedy próbuję dodać go do mojego JPanela po prostu nie działa, nic nie jest rysowane. Oto mój kod:JComponent not 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);
}
}
To jest naprawdę dziwne, i replikowałem ten problem na Windowsie i Macu i jego zawsze dokładnie to samo – lilroo
Ah, szerokość i wysokość jest ustawiona na zero – lilroo
Po zapamiętaniu, aby ustawić pola szerokości i wysokości to nadal nie działało, ale kiedy nadpisałem metodę getPreferredSize() zadziałało. – lilroo