tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
3
ZUGRIFFE
1109
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Registriert seit
    Jan 2005
    Beiträge
    9
    Hallo,

    ich ziehe per DragAndDrop ein TreeItem auf eine Tabelle (SWT/JFace, kein Swing).
    Danach soll der Text des TreeItem in der Zelle (Spalte x, Zeile y) der Tabelle eingefügt werde, wo das 'drop' passiert.

    Über event.item erhalte ich die Zeile (das TableItem):
    int index = table.indexOf((TableItem) event.item);

    Wie bekomme ich jetzt den Spaltenindex ?

    Die einzige Möglichkeit, die ich bis jetzt gesehen habe:
    Mit event.x und event.y erhalte ich die Koordinaten der Maus, wenn das 'drop' passiert.
    Point pt = new Point (event.x, event.y);
    Dann gehe ich durch die Spalten des (TableItem) event.item und prüfe, ob der Punkt innerhalb der Grenzen einer Spalte liegt

    TableItem item = (TableItem) event.item;
    for (int i=0; i<COLUMNS; i++) {
    Rectangle rect = item.getBounds (i);
    if (rect.contains (pt)) {
    columnIndex = i;
    break;
    }
    }

    Leider liefert TableItem.getBounds die Koordinaten relativ zum 'parent', also zur Tabelle.
    DropTargetEvent.x und DropTargetEvent.y liefern die Koordinaten relativ zum 'display'
    Muss ich jetzt umrechnen oder kennt jemand eine einfachere Lösung?
    Viele Dank
    Geändert von dennisalcapone (14.02.05 um 18:27 Uhr)
     

  2. #2
    Avatar von takidoso
    takidoso takidoso ist offline Mitglied Brillant
    Registriert seit
    Aug 2004
    Ort
    Kömigstein
    Beiträge
    911
    Ich bin nicht sicher ob Du JTable verwendest oder etwas anderes
    In JTable gibt es die Routinen:
    public intcolumnAtPoint(Point point) und public int rowAtPoint(Point point)
    gefunden. vielleicht helfen die Dir weiter

    Takidoso
     

  3. #3
    Avatar von takidoso
    takidoso takidoso ist offline Mitglied Brillant
    Registriert seit
    Aug 2004
    Ort
    Kömigstein
    Beiträge
    911
    die Art wie ich diese beiden Routinen in JTAble ausfindigmachte war, dass ich nach Mouse gesucht habe um Mouse-Listener oder ähnliches aufstöbern zu können. Es erscheint mir dass Du kein Swing benutzt also werden dir dann vermutlich die beiden Routinene nicht helfen. Aber wenn Du im Souce-code deines GUI-Frameworks vielleicht nach Mäusen ausschau hälst klappt es vielleicht auch mit dem Käse ... ehhh Column :-D

    viel Glück

    Takidoso
     

  4. #4
    Registriert seit
    Jan 2005
    Beiträge
    9
    Hallo, ich hab es gefunden

    ein Control-Objekt bietet u.a. die Methode toControl(int,int): konvertiert Display-relative Koordinaten in Control-relativen 'Point'.

    Ich rufe jetzt table.toControl(event.x, event.y) auf und erhalte so die Koordinaten der Maus beim 'drop' relativ zur Tabelle. Da auch TableItem.getBounds() die Koordinaten relativ zur Tabelle liefert (dem 'parent'), bekomme ich jetzt den gewünschetn Spaltenindex.

    Vielen Dank an alle, die sich Gedanken gemacht haben. Speziell an takidoso für die schnellen Antworten.
    Jürgen
     

Ähnliche Themen

  1. Drag & Drop von Tabelle nach Tree
    Von Ahuga im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 4
    Letzter Beitrag: 26.08.10, 10:24
  2. Tree mit ++Icon & Drag & Drop aus dem Explorer
    Von JavaEngel im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 2
    Letzter Beitrag: 14.09.08, 13:02
  3. Drag'n Drop im Tree sehr ungenau...
    Von Loki2 im Forum Java
    Antworten: 0
    Letzter Beitrag: 20.06.06, 07:54
  4. SWT: Ghosted Drag-Image bei Drag & Drop
    Von snake_plissken im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 1
    Letzter Beitrag: 15.04.06, 23:36
  5. SWT Table(Tree) mit Checkbox in einer Zeile
    Von enrichard im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 2
    Letzter Beitrag: 03.04.06, 20:27