Hallo Community,
ich habe folgendes Problem --> ich versuche seit einiger Zeit ein JLabel mit einer Drag and Drop Funktion anzusprechen. Ich bin durch fleißiges suchen und ausprobieren darauf gekommen das es nicht so geht wie ich mir das vorstelle.
Und zwar das JLabel hat keinen Text sondern ein ImageIcon, dieses JLabel Element muss die Funktionalität erhalten von Punkt A nach Punkt B gezogen zu werden und beim ziehen über das Frame sichtbar sein.
Hier meine gescheiterten Versuche:
Ich habs versucht über die MouseEvents, wobei er das "mouseDrag" Event gar nicht ernst nimmt, über das setLocation funktioniert es einmal und dann geht er, warum auch immer, in die Minuszahlen und mit dem klicken auf dem Frame, war auch nur ein Test, positioniert er mein Label irgendwie komisch.
Bitte um Hilfe falls sich jemand damit auskennt ich blick da irgendwie nicht mehr durch.
lg - a cup of java
ich habe folgendes Problem --> ich versuche seit einiger Zeit ein JLabel mit einer Drag and Drop Funktion anzusprechen. Ich bin durch fleißiges suchen und ausprobieren darauf gekommen das es nicht so geht wie ich mir das vorstelle.
Und zwar das JLabel hat keinen Text sondern ein ImageIcon, dieses JLabel Element muss die Funktionalität erhalten von Punkt A nach Punkt B gezogen zu werden und beim ziehen über das Frame sichtbar sein.
Hier meine gescheiterten Versuche:
Code:
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.dnd.DragSource;
import java.awt.event.MouseEvent;
import javax.swing.*;
import javax.swing.JComponent;
import java.awt.event.MouseAdapter;
import javax.swing.JFrame;
public class testDrag extends JComponent {
public JFrame frame = new JFrame("testDrag");
public ImageIcon ico = new ImageIcon("../mobili_prototyp/images/anschluesse/Anschluss4_vor_grau.jpg");
public JComponent c = null;
public JLabel componentType = new JLabel(ico);
DragSource dragSource;
boolean dragMode;
public testDrag() {
}
public testDrag(boolean unwichtig){
jbInit();
}
public void setDragMode(boolean dragMode) {
this.dragMode = dragMode;
}
public boolean getDragMode() {
return dragMode;
}
public void jbInit(){
final testDrag td;
td = new testDrag();
frame.getContentPane().add(td, BorderLayout.CENTER);
componentType.setBackground(new Color(0,0,0));
componentType.setSize(31,31);
componentType.setLocation(0,0);
frame.getContentPane().setLayout(null);
frame.getContentPane().add(componentType, null);
frame.setSize(400, 400);
frame.setVisible(true);
componentType.setTransferHandler(new TransferHandler("text"));
//componentType.
frame.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e){
System.out.println(e.getX() + " " + e.getY());
//JComponent c = (JComponent)e.getSource();
componentType.setLocation(e.getX(), e.getY());
}
});
componentType.addMouseListener(new MouseAdapter() {
public void mouseEntered(MouseEvent e){
c = (JComponent)e.getSource();
}
public void mousePressed(MouseEvent e) {
//TransferHandler th = c.getTransferHandler();
//th.exportAsDrag(c, e, TransferHandler.COPY);
}
public void mouseReleased(MouseEvent e) {
c.setLocation(0,0);
c.setLocation(e.getX(), e.getY());
System.out.println("2: " + c.getX() + " " + c.getY());
//c.repaint();
}
public void mouseExited(MouseEvent e) {
}
public void mouseDrag(MouseEvent e){
System.out.println("4: " + c.getX() + " " + c.getY());
//c.setLocation(c.getX(), c.getY());
}
});
}
public static void main(String[] args) {
testDrag tud = new testDrag(true);
}
}
Ich habs versucht über die MouseEvents, wobei er das "mouseDrag" Event gar nicht ernst nimmt, über das setLocation funktioniert es einmal und dann geht er, warum auch immer, in die Minuszahlen und mit dem klicken auf dem Frame, war auch nur ein Test, positioniert er mein Label irgendwie komisch.
Bitte um Hilfe falls sich jemand damit auskennt ich blick da irgendwie nicht mehr durch.
lg - a cup of java