import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; import java.awt.Graphics; import java.awt.Image; import java.awt.Toolkit; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JSlider; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; public class ScaleImageTest1 extends JFrame { private double scaleFactor = 1.0; private BufferedImage sourceImage; JPanel panel; JSlider slider; public Graphics g; public ScaleImageTest1() { super("ScaleImageTest"); setDefaultCloseOperation(DISPOSE_ON_CLOSE); try { sourceImage = ImageIO.read(new File("duke_skateboard.jpg")); } catch (IOException e) { e.printStackTrace(); } createPanel(); createSlider(); addComponents(); } public void createPanel(){ panel = new JPanel(){ public void paintComponent(Graphics g) { Dimension panelSize = getSize(); int width = panelSize.width; int height = panelSize.height; //g.setColor(Color.WHITE); g.fillRect(0, 0, width, height); //g.setColor(Color.BLACK); int imageWidth = (int) (sourceImage.getWidth() * scaleFactor); int imageHeight = (int) (sourceImage.getHeight() * scaleFactor); int imageX = width / 2 - imageWidth / 2; int imageY = height / 2 - imageHeight / 2; Image image = sourceImage.getScaledInstance( imageWidth, imageHeight, Image.SCALE_SMOOTH); g.drawImage(image, imageX, imageY, null); } }; } public void createSlider(){ slider = new JSlider(0, 200); slider.addChangeListener(new ChangeListener() { public void stateChanged(ChangeEvent e) { int value = slider.getValue(); if (value > 0) { scaleFactor = (double) value / 100.0; repaint(); } } }); } public void addComponents(){ getContentPane().add(panel, BorderLayout.CENTER); getContentPane().add(slider, BorderLayout.SOUTH); } public static void main(String[] args) { final JFrame frame = new ScaleImageTest1(); final Dimension frameSize = new Dimension(600, 400); frame.setSize(frameSize); Toolkit.getDefaultToolkit().getScreenSize(); frame.setVisible(true); } }