Hallo leuts,
Ich hab hier nen kleines Programm geschrieben. Das soll mir ein Bild anzeigen, und anschließend per Klick auf den Zoombutton das Bild zoomen. Allerdings bleibt das Bild trotz des Repaint-Befehls gleich. Wo liegt mein Fehler?
Ich hab hier nen kleines Programm geschrieben. Das soll mir ein Bild anzeigen, und anschließend per Klick auf den Zoombutton das Bild zoomen. Allerdings bleibt das Bild trotz des Repaint-Befehls gleich. Wo liegt mein Fehler?
Code:
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JSlider;
public class BildZoomMain extends JFrame implements ActionListener{
JPanel panel;
JLabel label;
JSlider slider;
ImageIcon icon;
BufferedImage image;
JButton button;
public BildZoomMain() throws IOException{
super("ShowImageExample");
panel = new JPanel();
slider = new JSlider();
button = new JButton("Zoom");
panel.setLayout(new BorderLayout());
setDefaultCloseOperation(EXIT_ON_CLOSE);
File file = new File("Bilddatei");
image = ImageIO.read(file);
icon = new ImageIcon(image);
label = new JLabel(icon);
panel.add(label, BorderLayout.CENTER);
panel.add(slider, BorderLayout.NORTH);
panel.add(button, BorderLayout.SOUTH);
add(panel);
pack();
setVisible(true);
button.addActionListener(this);
}
public static void main(String[] args) throws IOException {
new BildZoomMain();
}
public BufferedImage zoomIn(BufferedImage bi, int scale){
int width = scale * bi.getWidth();
int height = scale * bi.getHeight();
BufferedImage biScale = new BufferedImage(width, height, bi.getType());
for(int i=0; i<width; i++)
for (int j=0; j<height; j++)
biScale.setRGB(i, j, bi.getRGB(i/scale, j/scale));
return biScale;
}
public void actionPerformed(ActionEvent e) {
zoomIn(image, 5);
label.repaint();
}
}