Java SwingWorker load image

Description

Java SwingWorker load image


import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.Random;

import javax.imageio.ImageIO;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingWorker;

public class Main extends JPanel {
  Random rnd = new Random();
  BufferedImage image;// w  ww . j a v a 2 s.co  m

  @Override
  public void paintComponent(Graphics g) {
    super.paintComponent(g);

    Graphics2D g2d = (Graphics2D) g;
    g2d.setBackground(Color.BLACK);
    g2d.clearRect(0, 0, getParent().getWidth(), getParent().getHeight());
    // antialising
    g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);

    SwingWorker<BufferedImage, Void> worker = new SwingWorker<BufferedImage, Void>() {
      @Override
      protected BufferedImage doInBackground() throws Exception {
        try {
          File imageFile = new File("icon.png");
          image = ImageIO.read(imageFile);
        } catch (IOException e1) {
          e1.printStackTrace();
        }
        return image;
      }

      @Override
      protected void done() {
        try {
          image = get();
        } catch (Exception ex) {
          ex.printStackTrace();
        }
        repaint();
      }
    };
    worker.execute();

    g2d.setBackground(Color.WHITE);
    g2d.clearRect(0, 0, getParent().getWidth(), getParent().getHeight());
    if (image != null) {
      g2d.drawImage(image, 0, 0, image.getWidth(), image.getHeight(), null);
    }

  }

  public static void main(String[] args) {
    // create frame for Main
    JFrame frame = new JFrame("java2s.com");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    Main Main = new Main();
    frame.add(Main);
    frame.setSize(300, 210);
    frame.setVisible(true);
  }
}



PreviousNext

Related