Hey
Ich würde gerne mehrere Bilder schnell hintereinander zeichnen, nur leider funktioniert dies nur wenn ich NICHT "extends JPanel" mache. Doch das brauche ich in meinem Programm.
Habe mal zwei Testprogramme geschrieben:
Das hier funktioniert:
und das hier leider nicht =(
kann mir jemand sagen woran das liegen könnte?
Danke schonmal im Voraus!
Ich würde gerne mehrere Bilder schnell hintereinander zeichnen, nur leider funktioniert dies nur wenn ich NICHT "extends JPanel" mache. Doch das brauche ich in meinem Programm.
Habe mal zwei Testprogramme geschrieben:
Das hier funktioniert:
Code:
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.net.URL;
import javax.imageio.ImageIO;
import javax.swing.*;
public class AniFunktioniert extends JFrame{
private BufferedImage h,eins,zwei;
private BufferedImage feld[];
public AniFunktioniert () {
h=loadPics("hintergrund.jpg");
eins=loadPics("1.png");
zwei=loadPics("2.png");
feld= new BufferedImage[2];
feld[0]=eins;
feld[1]=zwei;
this.setPreferredSize(new Dimension(500,500));
Dimension resolution = Toolkit.getDefaultToolkit().getScreenSize();
this.setResizable(false);
this.setLocation((resolution.width - this.getSize().width)/7,
(resolution.height - this.getSize().height)/7);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.pack();
this.setVisible(true);
this.repaint();
}
private BufferedImage loadPics(String path){
BufferedImage source = null;
URL pic_url= getClass().getClassLoader().getResource(path);
try {
source = ImageIO.read(pic_url);
} catch (IOException e) {
e.printStackTrace();
}
return source.getSubimage(0, 0, source.getWidth(), source.getHeight());
}
public void paint (Graphics g) {
g.drawImage(h,0,0,this);
aniZeichnen(g);
}
private void aniZeichnen(Graphics g) {
for(int i = 0; i <2;i++){
g.drawImage(feld[i],100,100,this);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
new AniFunktioniert();
}
}
und das hier leider nicht =(
Code:
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.net.URL;
import javax.imageio.ImageIO;
import javax.swing.*;
public class extendsJPanel extends JPanel{
private JFrame frame;
BufferedImage h,eins,zwei;
BufferedImage feld[];
public extendsJPanel () {
h=loadPics("hintergrund.jpg");
eins=loadPics("1.png");
zwei=loadPics("2.png");
feld= new BufferedImage[2];
feld[0]=eins;
feld[1]=zwei;
feld= new BufferedImage[2];
feld[0]=eins;
feld[1]=zwei;
this.setPreferredSize(new Dimension(500,500));
Dimension resolution = Toolkit.getDefaultToolkit().getScreenSize();
frame= new JFrame();
frame.setResizable(false);
frame.setLocation((resolution.width - frame.getSize().width)/7,
(resolution.height - frame.getSize().height)/7);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(this);
frame.pack();
frame.setVisible(true);
frame.repaint();
}
private BufferedImage loadPics(String path){
BufferedImage source = null;
URL pic_url= getClass().getClassLoader().getResource(path);
try {
source = ImageIO.read(pic_url);
} catch (IOException e) {
e.printStackTrace();
}
return source.getSubimage(0, 0, source.getWidth(), source.getHeight());
}
public void paint (Graphics g) {
g.drawImage(h,0,0,this);
aniZeichnen(g);
}
private void aniZeichnen(Graphics g) {
System.out.println("23");
for(int i = 0; i <2;i++){
g.drawImage(feld[i],100,100,this);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public static void main(String[] args) {
new extendsJPanel();
}
}
kann mir jemand sagen woran das liegen könnte?
Danke schonmal im Voraus!