Hallo ihr Lieben.
Habe folgendes Problem:
Ich habe ein Programm geschrieben, welches erstmal nur ein Rechteck auf ein JPanel legt und dieses dann zeigt. Jetzt möchte ich diese Rechteck auf dem JPanel verschieben können. Ich dachte mir, wenn ich dieses Rechteck einmal intialisiere und es immer verändere wenn ich es brauche könnte das so funktionieren. Mein Problem ist jetzt, dass er einmal den Start-Button mitzeichnet und dann die vorher gezeichnete Rechteck noch zu sehen sind.
Mein Programm:
Das ist bestimmt ein total doofer Fehler. Nur leider kenne ich mich nicht wirklich damit aus und bin schon nahe der Verzweifelung.
Also, Frage: Warum sind die vorherigen Versionen der Rechtecke noch zu sehen, obwohl das JPanel neu gezeichnet wurde und das Rechteck gar nicht mehr existiert? Und wo kommt der Start-Button her?
Vielen Dank schonmal! Wäre super wenn mir jemand helfen könnte.
Lieben Gruß
Kickin
Habe folgendes Problem:
Ich habe ein Programm geschrieben, welches erstmal nur ein Rechteck auf ein JPanel legt und dieses dann zeigt. Jetzt möchte ich diese Rechteck auf dem JPanel verschieben können. Ich dachte mir, wenn ich dieses Rechteck einmal intialisiere und es immer verändere wenn ich es brauche könnte das so funktionieren. Mein Problem ist jetzt, dass er einmal den Start-Button mitzeichnet und dann die vorher gezeichnete Rechteck noch zu sehen sind.
Mein Programm:
Code:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
class Fenster extends JFrame implements ActionListener {
private Rect rechteck;
private Zeichenflaeche flaeche;
Fenster (Rect irechteck) {
rechteck = irechteck;
getContentPane().setLayout(new BorderLayout());
//spiel_status einfügen
JLabel spiel_status = new JLabel("Try to hit the Rectangle!", SwingConstants.CENTER);
getContentPane().add(spiel_status, BorderLayout.NORTH);
//Leeres JPanel einfügen
flaeche = new Zeichenflaeche(irechteck);
getContentPane().add(flaeche, BorderLayout.CENTER);
//Startbutton und Statistik einfügen
JPanel unten = new JPanel(new FlowLayout());
JButton spiel_start = new JButton("Start");
spiel_start.addActionListener(this);
JLabel treffer = new JLabel("Hits: 0");
JLabel versuche = new JLabel("Total clicks: 0");
unten.add(spiel_start);
unten.add(treffer);
unten.add(versuche);
getContentPane().add(unten, BorderLayout.SOUTH);
//Anzeigen
setSize(400,400);
setVisible(true);
setTitle("Simple Game");
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public void actionPerformed(ActionEvent e) {
Thread spiel = new Game(rechteck, flaeche);
spiel.start();
}
}
class Zeichenflaeche extends JPanel {
private Rect rechteck;
Zeichenflaeche (Rect irechteck){
rechteck = irechteck;
}
public void paint(Graphics g) {
rechteck.drawMe(g,Color.black);
}
}
class Game extends Thread {
private Rect rechteck;
private Zeichenflaeche flaeche;
Game (Rect irechteck, Zeichenflaeche iflaeche) {
rechteck = irechteck;
flaeche = iflaeche;
}
public void run() {
try{
rechteck.reSet(10,10,50,50);
flaeche.repaint();
Thread.sleep(1000);
rechteck.reSet(20,20,50,50);
flaeche.repaint();
Thread.sleep(1000);
rechteck.reSet(30,30,50,50);
flaeche.repaint();
}
catch(InterruptedException e){
}
}
public static void main ( String [] args) {
Rect rechteck = new Rect(0,0,0,0);
Fenster spiel = new Fenster(rechteck);
}
}
class Rect {
private int x,y,breite,hoehe;
Rect (int ix, int iy, int ibreite, int ihoehe) {
x = ix;
y = iy;
breite = ibreite;
hoehe = ihoehe;
}
Rect () {
x = 0;
y = 0;
breite = 0;
hoehe = 0;
}
void drawMe (Graphics g, Color c) {
g.setColor(c);
g.fillRect(x,y,breite,hoehe);
}
void setPosition(int ix, int iy) {
x = ix;
y = iy;
}
void setSize(int ibreite, int ihoehe) {
breite = ibreite;
hoehe = ihoehe;
}
void reSet(int ix, int iy, int ibreite, int ihoehe) {
x = ix;
y = iy;
breite = ibreite;
hoehe = ihoehe;
}
}
Das ist bestimmt ein total doofer Fehler. Nur leider kenne ich mich nicht wirklich damit aus und bin schon nahe der Verzweifelung.
Also, Frage: Warum sind die vorherigen Versionen der Rechtecke noch zu sehen, obwohl das JPanel neu gezeichnet wurde und das Rechteck gar nicht mehr existiert? Und wo kommt der Start-Button her?
Vielen Dank schonmal! Wäre super wenn mir jemand helfen könnte.
Lieben Gruß
Kickin