Hallo Zusammen
Ich bin gerade am Java lernen. Dabei versuche ich ein Art Moorhuhn zu machen.
Bei welchem mann ein Hintergrundsbild hat und Enten auf welche man scheissen kann.
Nun habe ich ein Problem:
Ich hab eine Ente welche sich von links nach rechts Bewegt. Und ein Hintergrund bild.
Einzeln kann ich sie Problemloss starten. Sobald ich aber beide gleichzeitig starte sehe ich die Ente nicht mehr...
Was kann nich dagegen Tun?
Aufbau des Fensters:
Klasse Background
Klasse Duck
Ich bin gerade am Java lernen. Dabei versuche ich ein Art Moorhuhn zu machen.
Bei welchem mann ein Hintergrundsbild hat und Enten auf welche man scheissen kann.
Nun habe ich ein Problem:
Ich hab eine Ente welche sich von links nach rechts Bewegt. Und ein Hintergrund bild.
Einzeln kann ich sie Problemloss starten. Sobald ich aber beide gleichzeitig starte sehe ich die Ente nicht mehr...
Was kann nich dagegen Tun?
Aufbau des Fensters:
Code:
package view;
import java.awt.Cursor;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.Image;
import java.awt.Point;
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.JTextField;
import javax.swing.Timer;
import controller.MyActionListener;
import controller.MyMouseListener;
import controller.MyTimerController;
public class Startframe extends JFrame implements ActionListener{
BufferedImage hintergrund;
BufferedImage ente;
BufferedImage fadenkreuzly;
public JTextField text = new JTextField("");
public Background bg;
public Duck du;
public Timer timer;
public double ypos=800;
public double xpos= 80;
public Startframe(String title) {
super(title);
//Vollbildmodus
setSize(1920, 1030);
MyActionListener ml = new MyActionListener();
MyMouseListener mousl = new MyMouseListener(null,xpos,ypos);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.addMouseListener(mousl);
try {
hintergrund = ImageIO.read(new File("background.png"));
ente = ImageIO.read(new File("ente.png"));
fadenkreuzly = ImageIO.read(new File("fadenkreuz.png"));
} catch (IOException e) {
e.printStackTrace();}
//Coursor auf Fadenkreuz geändert
Cursor c = getToolkit().createCustomCursor(
new ImageIcon( "fadenkreuz.png" ).getImage(),
new Point(30,30), "Cursor" );
setCursor( c );
// Mein Grafiken erstellen
bg = new Background(hintergrund);
//bg.setFocusable(true);
du = new Duck(xpos, xpos, ente);
du.setFocusable(true);
// Entweder ist Background oder Ente nur sichtbar.,....
this.getContentPane().add(du);
timer = new Timer(20, new MyTimerController(this));
timer.setDelay(10);
setVisible(true);
timer.start();}
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
}
}
Klasse Background
Code:
package view;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import javax.swing.JPanel;
public class Background extends JPanel {
BufferedImage hintergrund;
public Background(BufferedImage im) {
super();
this.hintergrund = im;
}
public void paintComponent(Graphics g){
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g;
g2d.drawImage(hintergrund, 0,0, this.getWidth(), this.getHeight(), this);
}
}
Klasse Duck
Code:
package view;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import javax.swing.JPanel;
public class Duck extends JPanel {
BufferedImage ente;
public double ypos=0;
public double xpos=0;
public int xgr=0;
public int ygr=0;
public Duck(double xpos, double ypos, BufferedImage ente) {
super();
this.ente = ente;
this.xpos = xpos;
this.ypos = ypos;
}
public void paintComponent(Graphics g){
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g;
g2d.drawImage(ente, (int)xpos, (int) ypos, 500, 300, this);
}
}
Zuletzt bearbeitet: