package gui; import java.awt.Dimension; 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 javax.imageio.ImageIO; import javax.swing.JPanel; public class ImagePanel extends JPanel { private static final long serialVersionUID = 1L; private BufferedImage image; private int preferredHeight = 1200; private int preferredWidth = 800; public ImagePanel(String path) { try { image = ImageIO.read(new File(path)); } catch (IOException ex) { try { image = ImageIO.read(getClass().getResourceAsStream("/" + path)); } catch (IOException e) { e.printStackTrace(); } } BufferedImage resized = new BufferedImage(preferredWidth, preferredHeight, image.getType()); Graphics2D g = resized.createGraphics(); g.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BICUBIC); g.drawImage(image, 0, 0, preferredWidth, preferredHeight, 0, 0, image.getWidth(), image.getHeight(), null); g.dispose(); image = resized; } @Override protected void paintComponent(Graphics g) { super.paintComponent(g); g.drawImage(image, 0, 0, null); } @Override public Dimension getPreferredSize() { return new Dimension(preferredWidth, preferredHeight); } }