Als Anfänger stoße ich bei der Programmierung auf folgendes Problem: ein mit einem ImageIcon-Objekt versehenes JLabel verschwindet, sobald ich es verschieben möchte. Woran kann das liegen?
Java:
import java.awt.event.*;
import java.awt.GridBagLayout;
import javax.swing.*;
public class Spielbrett {
private JFrame frame;
private Label label;
private ImageIcon icon;
public static void main(String args[]) {
new Spielbrett();
}
public Spielbrett() {
icon = new ImageIcon("Kreis.png");
frame = new JFrame();//Neues Frame-Objekt
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//Fenster wird geschlossen, wenn man auf "x" klickt
frame.setLayout(new GridBagLayout());//Kein Layout hinzugefügt
label = new Label(icon);//Neues Label-Objekt erstellen
label.setBounds(50, 50, 100, 100);
frame.getContentPane().add(label);
frame.setBounds(50,50,1000,1000);//Position des Fensters und Größe festlegen
frame.setVisible(true);//Fenster sichtbar machen
label.addMouseMotionListener(new MouseMotionListener() {
public void mouseMoved(MouseEvent e) {
}
public void mouseDragged(MouseEvent e) {
label.setBounds(label.getMyX() + e.getXOnScreen() - label.getMouseX(), label.getMyY() + e.getYOnScreen() - label.getMouseY(),50,50);
}
});
label.addMouseListener(new MouseListener() {
@Override
public void mouseClicked(MouseEvent e) {
}
@Override
public void mousePressed(MouseEvent e) {
label.setMouseX(e.getXOnScreen());
label.setMouseY(e.getYOnScreen());
label.setMyX(label.getX());
label.setMyY(label.getY());
}
@Override
public void mouseReleased(MouseEvent e) {
}
@Override
public void mouseEntered(MouseEvent e) {
}
@Override
public void mouseExited(MouseEvent e) {
}
});
}
}
DIE KLASSE Label...
import javax.swing.*;
public class Label extends JLabel{
private int myX;
private int myY;
private int mouseX;
private int mouseY;
public Label(ImageIcon icon) {
super(icon);
}
public Label(String text){
super(text);
}
public int getMyX() {
return myX;
}
public void setMyX(int x) {
this.myX = x;
}
public int getMyY() {
return myY;
}
public void setMyY(int y) {
this.myY = y;
}
public int getMouseX() {
return mouseX;
}
public void setMouseX(int mouseX) {
this.mouseX = mouseX;
}
public int getMouseY() {
return mouseY;
}
public void setMouseY(int mouseY) {
this.mouseY = mouseY;
}
private static final long serialVersionUID = 1L;
}