Sehr geehrte Damen und Herren,
ich nutze Eclipse Indigo und versuche erstellte Rechtecke auf dem JPanel
wieder zu entfernen. Einfach repaint anwenden, aber das funktioniert nicht.
Schon versucht mehrere Repaints anzusetzen.
Ich versuche zu verstehen, wo sich mein Fehler befindet und wie ich das
besser mache. Mehrere Personen konnten den Fehler nicht finden.
Würde mich über jede Hilfe freuen.
Rectangles.java
Rechteck.java
Grüße
R. Meier
ich nutze Eclipse Indigo und versuche erstellte Rechtecke auf dem JPanel
wieder zu entfernen. Einfach repaint anwenden, aber das funktioniert nicht.
Schon versucht mehrere Repaints anzusetzen.
Ich versuche zu verstehen, wo sich mein Fehler befindet und wie ich das
besser mache. Mehrere Personen konnten den Fehler nicht finden.
Würde mich über jede Hilfe freuen.
Rectangles.java
Java:
package Aufgabe2;
import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.*;
import javax.swing.*;
public class Rectangles extends JPanel {
/**
*
*/
private static final long serialVersionUID = 982673984757355986L;
ArrayList<Rechteck> rechtecke = new ArrayList<Rechteck>();
static final Color hg_farbe = Color.lightGray;
public void paintComponent(Graphics grafik) {
super.paintComponents(grafik);
malen(grafik);
}
public Rectangles() {
setBackground(hg_farbe);
rechtecke = new ArrayList<Rechteck>();
addMouseListener(new MyMouseListener());
}
void malen(Graphics grafik) {
anzeigen(grafik);
}
void anzeigen(Graphics grafik) {
for (Rechteck i : rechtecke) {
grafik.drawRect(i.x, i.y, i.width, i.height);
}
}
void erase(Graphics grafik, Rechteck temp) {
setBackground(hg_farbe);
grafik.setColor(hg_farbe);
grafik.drawRect(temp.x, temp.y, temp.width, temp.height);
}
public void addRechteck(Rechteck temp) {
if (rechtecke.size() == 10)
System.out.println("Nur 10 Rechtecke sind erlaubt!");
else {
rechtecke.add(temp);
malen(getGraphics());
//repaint();
}
}
public void removeRechteck(MouseEvent mausevent) {
for(int i = 0; i < rechtecke.size(); i++) {
if(rechtecke.get(i).contains(mausevent.getPoint()) == true) {
// Rechteck temp = rechtecke.get(i);
rechtecke.remove(i);
// erase(getGraphics(), temp);
// malen(getGraphics());
repaint();
}
}
}
public static void main(String[] args) {
JFrame fenster = new JFrame("Rectangles");
fenster.setSize(512, 384);
fenster.setLocation(new Point(0, 0));
fenster.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
fenster.getContentPane().add(new Rectangles());
fenster.setVisible(true);
}
class MyMouseListener extends MouseAdapter {
public void mouseClicked(MouseEvent mausevent) {
switch (mausevent.getModifiers()) {
case 16:
addRechteck(new Rechteck(mausevent.getX(), mausevent.getY(),
(int) (Math.random() * 512),
(int) (Math.random() * 384)));
break;
case 4:
removeRechteck(mausevent);
break;
}
}
}
}
Rechteck.java
Java:
package Aufgabe2;
import java.awt.Color;
import java.awt.Rectangle;
public class Rechteck extends Rectangle {
private static final long serialVersionUID = 7784564977562789207L;
private Color faerbung;
private boolean imRechteck;
//Konstruktor gibt an die super-Klasse
public Rechteck(int positionX, int positionY, int laenge, int breite) {
super(positionX, positionY, laenge, breite);
faerbung = Color.BLACK;
imRechteck = false;
}
public void setImRechteck(boolean drin) {
imRechteck = drin;
}
public void zuruecksetzenimRecht() {
this.imRechteck = false;
}
public boolean getImRechteck() {
return imRechteck;
}
public void setFaerbung(Color farbton) {
faerbung = farbton;
}
public Color getFaerbung() {
return faerbung;
}
/**
* @param args
*/
//Main für den Test
/*
public static void main(String[] args) {
//Konstruktortest
Rechteck re1 = new Rechteck(12, 34, 67, 100);
//einmal true rein
re1.setImRechteck(true);
boolean drin = re1.getImRechteck();
System.out.println("bekomme setImRechteck " + drin);
//einmal false rein
re1.setImRechteck(false);
drin = re1.getImRechteck();
System.out.println("bekomme setImRechteck " + drin);
//testen bin ich im Rechteck
drin = re1.getImRechteck();
System.out.println("bekomme getImRechteck " + drin);
//Färbung testen
re1.setFaerbung(new Color(34));
Color farbe = re1.getFaerbung();
System.out.println("bekomme setFaerbung " + farbe);
//Färbung testen
farbe = re1.getFaerbung();
System.out.println("bekomme getFaerbung " + farbe);
//Positionen testen
boolean rechteckim;
rechteckim = re1.getImRechteck();
System.out.println("bekomme getImRechteck " + rechteckim);
re1.setImRechteck(true);
rechteckim = re1.getImRechteck();
System.out.println("bekomme setImRechteck " + rechteckim);
//teste entfernen des ImRechteck
re1.zuruecksetzenimRecht();
rechteckim = re1.getImRechteck();
System.out.println("bekomme zuruecksetzenImRechteck " + rechteckim);
}
*/
}
Grüße
R. Meier