我有一個擴展JComponent的自定義組件,它覆蓋了paintComponent(Graphics g)方法,但是當我嘗試將它添加到我的JPanel中時,它不起作用,什麼也沒有繪製。 這裏是我的代碼:JComponent not 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);
}
}
這真的很奇怪,我在windows和mac上覆制了這個問題,它總是一模一樣 – lilroo
啊,寬度和高度都設置爲零 – lilroo
記住設置寬度和高度字段後仍然不起作用,但當我重寫了它的getPreferredSize()方法。 – lilroo