import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import javax.imageio.ImageIO;
import java.io.*;
import java.io.File;
import javax.swing.JFileChooser;
public class Bildbetrachter extends JFrame {
static Bildbetrachter fenster;
Image[] Bild;
int x_pos,y_pos;
String name;
static CBildLeinwand bildanzeige;
ImageIcon tmp;
int i =0;
int a = i;
int bild_x1,bild_y1; // die aktuelle Begrenzung
int bild_x2,bild_y2; // des Bildes
int bildBreite,bildHoehe;
class ActionLauscher implements ActionListener {
public void actionPerformed(ActionEvent e) {
String Label;
Label = e.getActionCommand();
if (Label.equals("Bild laden"))
laden();
if (Label.equals("beenden"))
System.exit(0);
if(Label.equals("weiter")){
i++;
}
if(Label.equals("zurück")){
i--;
}
}
}
Bildbetrachter (String titel) {
super(titel);
x_pos = y_pos = 0;
bild_x1 = bild_x2 = bild_y1 = bild_y2 = 0;
name = null;
Bild = null;
setLayout(new BorderLayout());
bildanzeige = new CBildLeinwand();
add(bildanzeige,BorderLayout.NORTH);
bildanzeige.setBackground(Color.white);
JPanel Button = new JPanel();
JButton weiter = new JButton("weiter");
JButton zurück = new JButton("zurück");
Button.add(zurück);
Button.add(weiter);
add(Button,BorderLayout.SOUTH);
weiter.addActionListener(new ActionLauscher());
zurück.addActionListener(new ActionLauscher());
JScrollPane listenScrollPane = new javax.swing.JScrollPane();
listenScrollPane.setViewportView(bildanzeige);
add(listenScrollPane);
JMenuBar menuleiste = new JMenuBar();
setJMenuBar(menuleiste);
JMenu menu = new JMenu("Datei"); //menu erstellen
JMenuItem laden = new JMenuItem("Bild laden"); //Menubutton laden
laden.addActionListener(new ActionLauscher());
JMenuItem beenden = new JMenuItem("beenden");
beenden.addActionListener(new ActionLauscher());
menu.add(laden);
menu.add(beenden);
menuleiste.add(menu);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public void laden(){
JFileChooser chooser = new JFileChooser();
chooser.setMultiSelectionEnabled(true);
if (chooser.showOpenDialog(bildanzeige) ==
JFileChooser.APPROVE_OPTION){
File[] dateiweg = chooser.getSelectedFiles();
String name1 = "nothing";
if (dateiweg.length>0){
name1 = dateiweg[0].getName();
}
for (int i=1; i<dateiweg.length;i++){
name1 += "," + dateiweg[i].getName();
}
name = name1;
}
if (name == null)
return;
Bild[i-1] = getToolkit().getImage(name);
MediaTracker mt = new MediaTracker(this);
mt.addImage(Bild[i-1], 0);
try{
mt.waitForAll();
}
catch (InterruptedException e) {
}
bildBreite = Bild[i-1].getWidth(bildanzeige);
bildHoehe = Bild[i-1].getHeight(bildanzeige);
bild_x1 = x_pos;
bild_y1 = y_pos;
bild_x2 = bild_x1 + bildBreite;
bild_y2 = bild_y1 + bildHoehe;
bildanzeige.setSize(bildBreite,bildHoehe);
bildanzeige.repaint();
}
public static void main(String[] args){
fenster = new Bildbetrachter("Bildbetrachter");
fenster.setSize(900,600);
bildanzeige.setSize(900,600);
fenster.pack();
fenster.setLocation(30,50);
fenster.setVisible(true);
}
class CBildLeinwand extends JPanel {
// Panel neu zeichnen
public void paintComponent(Graphics g) {
super.paintComponent(g);
// Falls ein Bild geladen ist, das Bild anzeigen
if(Bild != null)
g.drawImage(Bild[i-1],x_pos,y_pos,this);
}
public Dimension getMinimumSize() {
return fenster.getSize();
}
public Dimension getPreferredSize() {
return bildanzeige.getSize();
}
}
}