Hallo Leute,
ich habe mal wieder ein Problem, diesmal in Swing, und habe noch keine Lösung im Forum gefunden.
Wäre Klasse, wenn ihr mir wieder so schnell helfen könntet.
Also hier das Problem:
Ich versuche selbstgestaltete Felder zu programmieren, die z.B. beim Anklicken ihre Farbe wechseln können. Da ich davon mehrere habe, dachte ich, dass ich die Kontrolle per MouseListener nicht in der Mutter-Komponente (also in dem JPanel wo alle drin sind) mache, sondern jedem Feld seinen eigenen MouseListener geben könnte.
Im MouseListener wird auch ne Testausgabe gemacht, die kommt aber leider nicht zum Vorschein.
Hier jetzt erstmal der Code:
Ich hoffe ihr könnt mir weiterhelfen.
Danke schonmal.
LG von mir^^
ich habe mal wieder ein Problem, diesmal in Swing, und habe noch keine Lösung im Forum gefunden.
Wäre Klasse, wenn ihr mir wieder so schnell helfen könntet.
Also hier das Problem:
Ich versuche selbstgestaltete Felder zu programmieren, die z.B. beim Anklicken ihre Farbe wechseln können. Da ich davon mehrere habe, dachte ich, dass ich die Kontrolle per MouseListener nicht in der Mutter-Komponente (also in dem JPanel wo alle drin sind) mache, sondern jedem Feld seinen eigenen MouseListener geben könnte.
Im MouseListener wird auch ne Testausgabe gemacht, die kommt aber leider nicht zum Vorschein.
Hier jetzt erstmal der Code:
Java:
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Point;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.JComponent;
public class Field extends JComponent implements MouseListener{
private static final long serialVersionUID = 1L;
private int x;
private int y;
private int lang;
private Color color = Color.BLUE;
public Field(int x, int y, int lang){
this.setX(x);
this.setY(y);
this.setLang(lang);
this.addMouseListener(this);
this.setSize(lang, lang);
}
public int min(int i, int j){
if(i < j){
return i;
}
else{
return j;
}
}
public void setColor(Color col){
this.color = col;
}
public void draw(Graphics g){
g.setColor(color);
g.fillRoundRect(x, y, lang, lang, lang/2, lang/2);
}
@Override
public void mouseClicked(MouseEvent e){
Point p = e.getPoint();
System.out.println("rofl");
if(p.getX()<this.x+this.lang&&p.getX()>this.x&&p.getY()<this.y+this.lang&&p.getY()>this.y){
this.setColor(Color.BLACK);
}
repaint();
}
@Override
public void mouseEntered(MouseEvent e){
System.out.println("X");
}
@Override
public void mouseExited(MouseEvent e){
}
@Override
public void mousePressed(MouseEvent e){
}
@Override
public void mouseReleased(MouseEvent e){
}
}
Ich hoffe ihr könnt mir weiterhelfen.
Danke schonmal.
LG von mir^^