Ich hab ein Problem und ich kapiere einfach meinen Fehler nicht.
Ich habe ein Skript genommen was ein Fenster erstellt, auf dem ich dann (später) ein spiel aufbaue nach und nach. Nur anstatt EIN Fenster zu erstellen wie in meiner Vorherigen Version ohne Probleme, erstellt das Programm jetzt unendlich viele Fenster... HILFE!
Hier das Script welches ich ausführe:
Hier die zwei eigentlich wichtigen Parts(Aus dem obigem Script):
Hier meine Unterklasse, die anscheinend das Problem verursacht!
Ich habe ein Skript genommen was ein Fenster erstellt, auf dem ich dann (später) ein spiel aufbaue nach und nach. Nur anstatt EIN Fenster zu erstellen wie in meiner Vorherigen Version ohne Probleme, erstellt das Programm jetzt unendlich viele Fenster... HILFE!
Hier das Script welches ich ausführe:
Java:
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.Timer;
public class Game {
private JFrame frame;
int time;
Graphics2D g2d;
int meter = 32;
int rasterX = 16;
int rasterY = 16;
int dimX = rasterX*meter;
int dimY = rasterY*meter;
int x=1;
int y=1;
public Game() {
frame = new JFrame("Catch the ball!");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocationByPlatform(true);
MovePanel panel = new MovePanel();
frame.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_UP) {
}
}
});
frame.add(panel);
Timer look = new Timer(500, panel);
look.setRepeats(true);
look.start();
frame.pack();
frame.setVisible(true);
}
public static void main(String[] args) {
new Game();
}
class MovePanel extends JPanel implements ActionListener {
private static final long serialVersionUID = 1L;
private int counter;
public MovePanel() {
super();
counter = 0;
}
public Dimension getPreferredSize() {
return new Dimension(dimX, dimY);
}
public void paintComponent(Graphics g) {
g2d = (Graphics2D) g;
Charakter charakter = new Charakter();
charakter.drawMe(x, y, g2d);
}
public void actionPerformed(ActionEvent e) {
setState(counter);
counter = (counter % 10) + 1;
}
private void setState(int i) {
if(i %2 == 1) {
time+=1;
}
else {
time+=1;
}
repaint();
}
}
}
Java:
public Dimension getPreferredSize() {
return new Dimension(dimX, dimY);
}
public void paintComponent(Graphics g) {
g2d = (Graphics2D) g;
Charakter charakter = new Charakter();
charakter.drawMe(x, y, g2d);
}
Hier meine Unterklasse, die anscheinend das Problem verursacht!
Java:
import java.awt.Color;
import java.awt.Graphics;
public class Charakter extends Game {
public void drawMe(int mX, int mY, Graphics g2d){
g2d.setColor(new Color(Integer.parseInt("EEC591", 16)));
g2d.fillOval(mX*meter, mY*meter, meter-1, meter-1);
}
}