Hallo
habe ein Programm das aus Dateien eine Animation machen soll der Thread soll via Button gestartet werden doch das geschieht nicht habe das public void run nun so gestartet aber es passiert nichts. Woran liegt das?
Wie kann ich es machen wenn ein Bild fehlt die in der Datei, da ist eine Liste mit Bilder, steht oder sie kaputt ist? Danke
Benedikt
habe ein Programm das aus Dateien eine Animation machen soll der Thread soll via Button gestartet werden doch das geschieht nicht habe das public void run nun so gestartet aber es passiert nichts. Woran liegt das?
Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;
import java.lang.*;
import java.util.*;
import java.net.*;
// Autor: Benedikt Peichel
// Datum: 29.09.2005
public class Playback extends JFrame implements Runnable {
// Anfang Variablen
private JMenuBar menu = new JMenuBar();
private JMenu datei = new JMenu("Datei");
private JMenuItem DateiJMenuItem1 = new JMenuItem("Öffnen");
private JMenuItem DateiJMenuItem2 = new JMenuItem("Schließen");
JFileChooser openfile = new JFileChooser();
private JPanel el1 = new JPanel(null);
private JButton play = new JButton();
private JButton stop = new JButton();
private JButton pause = new JButton();
private JPanel Panel = new JPanel();
private JPanel geschPanel = new JPanel();
private ButtonGroup gesch = new ButtonGroup();
private JRadioButton jButtonGroup1ButtonLangsam = new JRadioButton("Langsam");
private JRadioButton jButtonGroup1ButtonMittel = new JRadioButton("Mittel");
private JRadioButton jButtonGroup1ButtonSchnell = new JRadioButton("Schnell");
String pfad;
String bild;
Zeichnen malen = new Zeichnen();
Image[] arImg;
Container cp = getContentPane();
Thread th;
int actImg = -1;
// Ende Variablen
public Playback(String title) {
// Frame-Initialisierung
super(title);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent evt) { System.exit(0); }
});
int frameWidth = 765;
int frameHeight = 488;
setSize(frameWidth, frameHeight);
setLocation(120, 140);
//Container cp = getContentPane();
cp.setLayout(new BorderLayout());
// Anfang Komponenten
malen.setBounds(128, 8, 768, 1024);
cp.add(malen);
setJMenuBar(menu);
menu.add(datei);
DateiJMenuItem1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
DateiJMenuItem1ActionPerformed(evt); } });
datei.add(DateiJMenuItem1);
datei.addSeparator();
DateiJMenuItem2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
DateiJMenuItem2ActionPerformed(evt); } });
datei.add(DateiJMenuItem2);
el1.setBounds(0, 0, 121, 177);
el1.setFont (new Font("MS Sans Serif", Font.PLAIN, 12));
cp.add(el1);
play.setBounds(8, 8, 43, 25);
play.setText("");
play.setIcon(new ImageIcon("images/Play24.gif"));
el1.add(play);
play.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
playActionPerformed(evt);
}
});
play.setEnabled(false);
stop.setBounds(32, 40, 43, 25);
stop.setIcon(new ImageIcon("images/Stop24.gif"));
stop.setText("");
el1.add(stop);
stop.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
stopActionPerformed(evt);
}
});
stop.setEnabled(false);
pause.setBounds(56, 72, 43, 25);
pause.setIcon(new ImageIcon("images/Pause24.gif"));
pause.setText("");
el1.add(pause);
pause.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
pauseActionPerformed(evt);
}
});
pause.setEnabled(false);
geschPanel.setBounds(8, 104, 97, 57);
geschPanel.setLayout(new GridLayout(3, 1));
gesch.add(jButtonGroup1ButtonLangsam);
geschPanel.add(jButtonGroup1ButtonLangsam);
gesch.add(jButtonGroup1ButtonMittel);
geschPanel.add(jButtonGroup1ButtonMittel);
gesch.add(jButtonGroup1ButtonSchnell);
geschPanel.add(jButtonGroup1ButtonSchnell);
el1.add(geschPanel);
jButtonGroup1ButtonMittel.setSelected(true);
// Ende Komponenten
setVisible(true);
}
// Anfang Ereignisprozeduren [color=red]// erst ab hier ist es wichtig[/color]
public void DateiJMenuItem1ActionPerformed(ActionEvent evt) { //Öffnen
openfile.setDialogTitle("Datei wählen ...");
//openfile.setCurrentDirectory(new File("c:/"));
if (openfile.showOpenDialog(this) == JFileChooser.APPROVE_OPTION) {
pfad = openfile.getSelectedFile().getPath();
play.setEnabled(true);
pause.setEnabled(true);
stop.setEnabled(true);
th = new Thread();
}
}
public void DateiJMenuItem2ActionPerformed(ActionEvent evt) { //Schließen
System.exit(1);
}
public void playActionPerformed(ActionEvent evt) {
th.start(); [color=red]//geht nicht wieso weiss ich nicht darum ist das run() da[/color]
run();
}
public void stopActionPerformed(ActionEvent evt) {
}
public void pauseActionPerformed(ActionEvent evt) {
}
public void run(){
int zeilen = 0;
try{
BufferedReader in = new BufferedReader(new FileReader(pfad));
while ( in.readLine() != null ) {
zeilen = zeilen + 1;
}
in.close();
} catch (Exception e){
}
//Bilder laden
arImg = new Image[zeilen];
MediaTracker mt = new MediaTracker(this);
Toolkit tk = getToolkit();
try{
BufferedReader in = new BufferedReader(new FileReader(pfad));
for(int i = 0; i <= zeilen; i++){
arImg[i] = tk.getImage(in.readLine());
System.out.println("add "+i);
mt.addImage(arImg[i], 0);
mt.waitForAll();
}
in.close();
}catch(Exception e){
}
//Animation
actImg = 0;
while(true){
repaint();
actImg = (actImg + 1) ;
try{
Thread.sleep(500);
}catch(Exception e){
}
}
}
public class Zeichnen extends Canvas{
public void paint (Graphics g){
if(actImg == -1){ //Passiert beim Start
Image img = getToolkit().getImage("images/willkommen.jpg");
MediaTracker mt = new MediaTracker(this);
mt.addImage(img, 0);
try{
mt.waitForAll();
}catch(InterruptedException e){
System.out.println(e);
}
g.drawImage(img ,1,1, this);
}
else{ //Passiert beim Öffnen
g.drawImage(arImg[actImg] ,1,1, this);
}
}
}
// Ende Ereignisprozeduren
public static void main(String[] args) {
new Playback("Playback");
}
}
Wie kann ich es machen wenn ein Bild fehlt die in der Datei, da ist eine Liste mit Bilder, steht oder sie kaputt ist? Danke
Benedikt