Also prinzipiell habe ich eine JList in der ich mehrere Miniaturbilder habe, die ich dann durch Drag/Drop einer Visualisierung übergebe. Allerdings hatte ich erst immer das Problem, dass hierbei oft komische Exceptions geworfen wurden. Die Lösung war hierbei, das "list.setDragEnabled(true)" heraus zu schmeißen.
Nun habe ich aber ein neues Problem.
Wenn ich ein Element in der Liste markiert habe und bei gedrückter linken Maustaste es ins "Ziel" bewege oder in der Liste bewege kommt es "manchmal" dazu, dass ein anderes Element der Liste (über dem ich mich gerade befinde) selektiert wird.
Prinzipiell ist das ja das Standard Verhalten. Allerdings scheint dies durch hinzufügen der "DragSource" nicht mehr der normal Fall zu sein (was auch gewünscht ist).
Zumindest funktioniert meistens alles wie gewünscht und dann wechselt die Selektierung bei der Bewegung dann doch wieder.
Mein Ziel ist es also, dass ein Element nur bei einem Klick selektiert werden kann und nicht bei Drag Bewegungen.
so in etwa hätte ich mir es gedacht. Wirkt aber nicht:
Hoffe ich hab mein Problem verständlich genug geschildert.
Schonmal Danke =)
Nun habe ich aber ein neues Problem.
Wenn ich ein Element in der Liste markiert habe und bei gedrückter linken Maustaste es ins "Ziel" bewege oder in der Liste bewege kommt es "manchmal" dazu, dass ein anderes Element der Liste (über dem ich mich gerade befinde) selektiert wird.
Prinzipiell ist das ja das Standard Verhalten. Allerdings scheint dies durch hinzufügen der "DragSource" nicht mehr der normal Fall zu sein (was auch gewünscht ist).
Zumindest funktioniert meistens alles wie gewünscht und dann wechselt die Selektierung bei der Bewegung dann doch wieder.
Mein Ziel ist es also, dass ein Element nur bei einem Klick selektiert werden kann und nicht bei Drag Bewegungen.
Java:
JList list = new JList(defaultListModel);
list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
list.setCellRenderer(new ImageRenderer());
// list.setDragEnabled(true); (wird nicht benutzt)
DragSource ds = new DragSource();
ds.createDefaultDragGestureRecognizer(list, DnDConstants.ACTION_COPY,this);
so in etwa hätte ich mir es gedacht. Wirkt aber nicht:
Java:
list.addMouseMotionListener(new MouseMotionListener() {
@Override
public void mouseMoved(MouseEvent e) {
}
@Override
public void mouseDragged(MouseEvent e) {
e.consume();
}
});
Hoffe ich hab mein Problem verständlich genug geschildert.
Schonmal Danke =)