Java.awtGraphics上的Java绘图组件
我有一个创建缓冲图像的方法,我希望能够创建一个进度条,然后将其绘制到缓冲图像上。你知道我怎样才能做到这一点吗Java.awtGraphics上的Java绘图组件,java,swing,bufferedimage,Java,Swing,Bufferedimage,我有一个创建缓冲图像的方法,我希望能够创建一个进度条,然后将其绘制到缓冲图像上。你知道我怎样才能做到这一点吗 public void paint() { BufferedImage img = new BufferedImage(100, 100, BufferedImage.TYPE_INT_ARGB); Graphics g = img.getGraphics(); JProgressBar pb = new JProgressBar();
public void paint() {
BufferedImage img = new BufferedImage(100, 100, BufferedImage.TYPE_INT_ARGB);
Graphics g = img.getGraphics();
JProgressBar pb = new JProgressBar();
//Draw the progress bar on Graphics g ???
}
您的问题似乎是xy问题,因为您确实不希望在任何绘制方法中添加或删除组件。我将假设您希望将JProgressBar放置在显示图像的组件上,为了做到最好,创建一个扩展JPanel的类,重写其paintComponent方法,在该方法重写中绘制图像,并将JProgressBar添加到该JPanel中(但不在其paint或paintComponent方法中) e、 g
设法回答了我自己的问题谢谢,pb.paint(g)似乎起作用了绘制组件而不是将功能组件放置在GUI上的目的是什么?
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);
}
}
}