Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java.awtGraphics上的Java绘图组件_Java_Swing_Bufferedimage - Fatal编程技术网

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); 
         }
    }

}