Auf einem JPanel hab ich die paintComponent-Methode überschrieben.
MouseListener+MouseMotionListener rufen repaint() auf.
Nun bekomme ich jedoch immer bei den MouseEvents so einen "zusätzlichen" Rahmen um das JPanels und die JLabels.
Hier erstmal zwei Bilder von meinem Problem.
Die Hintergrundbilder hab ich rausgenommen, damit man es besser sieht.
(anklicken zum vergrößern, sonst sieht mans nicht^^)
normal:
mit repaint():
(der grüne strich soll da sein, da ich mit der paintComponent drauf male)
Das große JPanel ist jenes mit der paintComponent() Methode, das kleine was man da noch drauf sieht ist ein JLabel, auf welchem der MouseListener liegt.
paintComponent-Methode des JPanels
[Java] @Override
public void paintComponent(Graphics g){
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g;
// draw background
// g2d.drawImage(backgroundImg, 0, 0, null);
// draw Solution
for(int i=0;i<9;i++){
g2d.drawImage(currentSolution,i%3*kartenSize+kartenSize, i/3*kartenSize+kartenSize,null);
}
// draw line
if(dragSource!=null && dragTarget!=null) {
g2d.setStroke(new BasicStroke(4.0f));
g2d.setColor(actualColor);
g2d.drawLine(dragSource.x, dragSource.y, dragTarget.x, dragTarget.y);
}
}[/Java]
Und der MouseListener ruft dann halt auf dem JPanel repaint() auf, wenn ich mit der Mouse zB über das kleine JLabel komme, und dann taucht dieser "Zusatz-Rahmen" auf. Sowohl am Rand des JPanels, als auch auf den JLabels.
Es muß was mit dem Zeichnen der Linie zu tun haben, wenn ich das auskommentiere, ist der Fehler weg.
MouseListener+MouseMotionListener rufen repaint() auf.
Nun bekomme ich jedoch immer bei den MouseEvents so einen "zusätzlichen" Rahmen um das JPanels und die JLabels.
Hier erstmal zwei Bilder von meinem Problem.
Die Hintergrundbilder hab ich rausgenommen, damit man es besser sieht.
(anklicken zum vergrößern, sonst sieht mans nicht^^)
normal:
mit repaint():
(der grüne strich soll da sein, da ich mit der paintComponent drauf male)
Das große JPanel ist jenes mit der paintComponent() Methode, das kleine was man da noch drauf sieht ist ein JLabel, auf welchem der MouseListener liegt.
paintComponent-Methode des JPanels
[Java] @Override
public void paintComponent(Graphics g){
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g;
// draw background
// g2d.drawImage(backgroundImg, 0, 0, null);
// draw Solution
for(int i=0;i<9;i++){
g2d.drawImage(currentSolution,i%3*kartenSize+kartenSize, i/3*kartenSize+kartenSize,null);
}
// draw line
if(dragSource!=null && dragTarget!=null) {
g2d.setStroke(new BasicStroke(4.0f));
g2d.setColor(actualColor);
g2d.drawLine(dragSource.x, dragSource.y, dragTarget.x, dragTarget.y);
}
}[/Java]
Und der MouseListener ruft dann halt auf dem JPanel repaint() auf, wenn ich mit der Mouse zB über das kleine JLabel komme, und dann taucht dieser "Zusatz-Rahmen" auf. Sowohl am Rand des JPanels, als auch auf den JLabels.
Es muß was mit dem Zeichnen der Linie zu tun haben, wenn ich das auskommentiere, ist der Fehler weg.
Zuletzt bearbeitet: