你看起來是一個xy問題,因爲你真的不想在任何繪畫方法中添加或刪除組件。我假設你想把一個JProgressBar放到一個顯示圖像的組件上,爲了做到這一點,創建一個擴展JPanel的類,覆蓋它的paintComponent方法,在該方法覆蓋中繪製你的圖像,並添加你的JProgressBar指向該JPanel(但不在其paint或paintComponent方法中)。
例如
public class MyPanel extends JPanel {
private BufferedImage image;
private JProgressBar progressBar = new JProgressBar();
public MyPanel() {
// get your image here
add(progressBar);
}
public Dimension getPreferredSize() {
Dimension size = super.getPreferredSize();;
if (image == null) {
return size;
} else {
int w = Math.max(image.getWidth(), size.width);
int h = Math.max(image.getHeight(), size.height);
return new Dimension(w, h);
}
}
protected void paintComponent(Graphics g) {
super.paintComponent(g);
if (image != null) {
g.drawImage(image, 0, 0, null);
}
}
}
好不容易纔回答我的問題,謝謝,pb.paint(G)似乎工作 –
什麼是繪圖組件,而不是放置一個功能組件上的GUI的目的是什麼? –