Servus, ich hätte da ein kleines Problem:
Ich habe eine Klasse, ImageLoader, in deren Constructor ein Bild mit x,y,usw erzeugt wird. Diese Klasse wird von der Klasse Panel aufgerufen. Dort werden die Objekte erstellt und in einer ArrayList gespeichert. Außerdem gibt es in der Klasse ImageLoader verschiedene Methoden, die die Werte verändern und in der Klasse Panel gibt es Methoden die den Bildschirm nach links und rechts bewegen sollen(aufgerufen im KeyListner). Das Problem ist jetzt, dass sich weder die Werte ändern, noch die Methode mit dem Move funktioniert, wenn ich das ganze im Key- bzw MouseHandler aufrufe....
ImageLoader:
Panel:
KeyHandler:
MouseHandler:
Ich habe leider keinen Plan, woran das liegt, wäre deshalb also für jede Hilfe dankbar!
Es tut mir auch leid, dass das so viel Code ist, ich weiß aber nicht genau was davon wichtig ist und habe deshalb lieber mal alles gesendet.
Ich habe eine Klasse, ImageLoader, in deren Constructor ein Bild mit x,y,usw erzeugt wird. Diese Klasse wird von der Klasse Panel aufgerufen. Dort werden die Objekte erstellt und in einer ArrayList gespeichert. Außerdem gibt es in der Klasse ImageLoader verschiedene Methoden, die die Werte verändern und in der Klasse Panel gibt es Methoden die den Bildschirm nach links und rechts bewegen sollen(aufgerufen im KeyListner). Das Problem ist jetzt, dass sich weder die Werte ändern, noch die Methode mit dem Move funktioniert, wenn ich das ganze im Key- bzw MouseHandler aufrufe....
ImageLoader:
Java:
package Actions;
import java.awt.Font;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.JLabel;
import Gui.Panel;
public class ImageLoader {
private int x,y,maxy,width,height;
private String path, imagename;
private boolean huhnisDown = true;
private BufferedImage image;
public ImageLoader(int x,int y, int maxy, String path, int width, int height, String name) {
this.x = x;
this.y = y;
this.maxy = maxy;
this.path = path;
this.width = width;
this.height = height;
imagename = name;
try {
image = ImageIO.read(new File(path));
} catch (IOException e) {
e.printStackTrace();
}
}
public void setX(int i) { x = i; }
public int getX() { return x; }
public void setY(int i) { y = i; }
public int getY() { return y; }
public int getMaxY() { return maxy;}
public void setWidth(int i) { width = i; }
public int getWidth() { return width; }
public void setHeight(int i) { height = i; }
public int getHeight() { return height; }
public void setImage(String path) { try { image = ImageIO.read(new File(path)); } catch (IOException e) { e.printStackTrace(); } }
public BufferedImage getImage() { return image; }
public String getname() { return imagename; }
}
Panel:
Code:
package Gui;
import java.awt.*;
import java.util.ArrayList;
import javax.swing.*;
import Actions.ImageLoader;
public class Panel extends JPanel {
private static final long serialVersionUID = 1L;
private int move = 15;
private boolean ingame = true, laden = false;
private int schussNr = 4, punkte = 0;
public ArrayList<ImageLoader> il = new ArrayList<ImageLoader>();
private JLabel points;
public Panel() {
setSize(1000,743);
setLayout(null);
setVisible(true);
repaint();
points = new JLabel("Punkte: " + punkte);
points.setBounds(790,10,200,40);
points.setFont(new Font("Arial",Font.BOLD,25));
points.setVisible(true);
add(points);
}
public void paintComponent(Graphics g) {
il.add(0, new ImageLoader(-1000, 0, 0, "rsc/MHBGE3.png", 3000, 743, "bgEbene3"));
g.drawImage(il.get(0).getImage(), il.get(0).getX(), il.get(0).getY(), il.get(0).getWidth(), il.get(0).getHeight(), null);
//Hühner Ebene2
il.add(1, new ImageLoader(-1000, 0, 0, "rsc/MHBGE2.png", 3000, 743, "bgEbene2"));
g.drawImage(il.get(1).getImage(), il.get(1).getX(), il.get(1).getY(), il.get(1).getWidth(), il.get(1).getHeight(), null);
il.add(2, new ImageLoader(-1000, 0, 0, "rsc/MHBGE1.png", 3000, 743, "bgEbene1"));
g.drawImage(il.get(2).getImage(), il.get(2).getX(), il.get(2).getY(), il.get(2).getWidth(), il.get(2).getHeight(), null);
il.add(3, new ImageLoader(-650, -45, 0, "rsc/Mühle.png", 600, 600, "mühlrad"));
g.drawImage(il.get(3).getImage(), il.get(3).getX(), il.get(3).getY(), il.get(3).getWidth(), il.get(3).getHeight(), null);
for(int i = 4; i < 10; i++) {
int x = -900,y = 550,maxy = 480;
if(i == 5) { x = -600; y = 490; maxy = 420; }
else if(i == 6) { x = -100; y = 470; maxy = 400; }
else if(i == 7) { x = 400; y = 470; maxy = 300; }
else if(i == 8) { x = 1000; y = 450; maxy = 370; }
else if(i == 9) { x = 1600; y = 390; maxy = 310; }
il.add(i, new ImageLoader(x, y, maxy, "rsc/Moorhuhn1.png", 40, 60, "huhnEbene2"));
g.drawImage(il.get(i).getImage(), il.get(i).getX(), il.get(i).getY(), il.get(i).getWidth(), il.get(i).getHeight(), null);
g.setColor(Color.RED);
g.drawLine(il.get(i).getX(), il.get(i).getY(), il.get(i).getX()+40, il.get(i).getY());
g.drawLine(il.get(i).getX(), il.get(i).getY()+60, il.get(i).getX()+40, il.get(i).getY()+60);
g.drawLine(il.get(i).getX(), il.get(i).getY(), il.get(i).getX(), il.get(i).getY()+60);
g.drawLine(il.get(i).getX()+40, il.get(i).getY(), il.get(i).getX()+40, il.get(i).getY()+60);
}
int xs[] = {10,45,80,115,150};
for(int i = 10; i < 15; i++) {
il.add(i, new ImageLoader(xs[i-10], 650, 650, "rsc/shotpat.png", 25, 50, "patrone"));
g.drawImage(il.get(i).getImage(), il.get(i).getX(), il.get(i).getY(), il.get(i).getWidth(), il.get(i).getHeight(), null);
}
if(laden == true) {
g.setColor(Color.RED);
g.setFont(new Font("Impact", Font.BOLD, 30));
g.drawString("Keine Munition", 380, 360);
}
}
public void setIngame(boolean i) { ingame = i; }
public boolean getIngame() { return ingame; }
public void setLaden(boolean i) { laden = i; }
public boolean getLaden() { return laden; }
public int getMoveInt() { return move; }
public int getSchussNr() { return schussNr; }
public void setSchussNr(int i) { schussNr = i; }
public int getpunkte() { return punkte; }
public void setPunkte(int i) { punkte += i; }
public void moveLeft() {
for(int i = 0; i < 10; i++) {
il.get(i).setX(il.get(i).getX() + getMoveInt());
}
repaint();
}
public void moveRight() {
for(int i = 0; i < 10; i++) {
il.get(i).setX(il.get(i).getX() - getMoveInt());
}
repaint();
}
public void pointsSetText(int p) { points.setText("Punkte: " + p); }
public int getPoints() { return punkte; }
public void setPoints(int p) { punkte = p; }
}
KeyHandler:
Java:
package Actions;
import java.awt.event.*;
import Gui.Panel;
public class KeyHandler implements KeyListener {
private Panel p;
public KeyHandler(Panel panel) {
p = panel;
}
@Override
public void keyPressed(KeyEvent e) {
if(e.getKeyCode() == KeyEvent.VK_LEFT) {
if(p.il.get(0).getX() <= 0){
p.moveLeft(); // Das geht nicht
p.repaint();
}
}
if(e.getKeyCode() == KeyEvent.VK_RIGHT) {
if(p.il.get(0).getX() >= -2000){
p.moveRight(); //Das geht nicht
}
}
}
@Override
public void keyReleased(KeyEvent e) {
}
@Override
public void keyTyped(KeyEvent e) {
}
}
MouseHandler:
Java:
package Actions;
import java.awt.Color;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.BorderFactory;
import javax.swing.JLabel;
import javax.swing.SwingUtilities;
import Animations.HuhnTimer;
import Gui.Panel;
public class MouseHandler implements MouseListener {
private Panel p;
private ImageLoader il;
private int mx, my;
public MouseHandler(Panel panel) {
p = panel;
}
@Override
public void mouseClicked(MouseEvent e) {
mx = e.getX() + 6;
my = e.getY() - 15;
if(SwingUtilities.isLeftMouseButton(e)) {
if(p.getSchussNr() >= 0) {
p.il.get(p.getSchussNr()+10).setImage("rsc/shotpatused.png"); //Das hier geht nicht
System.out.println(p.il.get(0).getImage());
p.setSchussNr(p.getSchussNr() - 1);
for(int i = 4; i < 10; i++) {
if(mx > p.il.get(i).getX() && mx < p.il.get(i).getX()+40 && my > p.il.get(i).getY() && my <p.il.get(i).getY()+60) {
p.setPoints(p.getPoints()+10);
p.pointsSetText(p.getPoints());
}
}
} else {
p.setLaden(true);
}
} else if(SwingUtilities.isRightMouseButton(e)) {
p.setLaden(false);
p.setSchussNr(4);
for(int i = 10; i < 15; i++) {
p.il.get(i).setImage("rsc/shotpat.png");
}
}
p.repaint();
//new Sound("sounds/test.wav");
}
@Override
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
}
}
Ich habe leider keinen Plan, woran das liegt, wäre deshalb also für jede Hilfe dankbar!
Es tut mir auch leid, dass das so viel Code ist, ich weiß aber nicht genau was davon wichtig ist und habe deshalb lieber mal alles gesendet.