tutorials.de Buch-Aktion 05/2012
Like Tree1Danke
  • 1 Beitrag von HonniCilest
ERLEDIGT
JA
ANTWORTEN
5
ZUGRIFFE
590
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Christian030783 Christian030783 ist offline Mitglied Bronze
    Registriert seit
    May 2009
    Beiträge
    36
    Guten Morgen,
    per Drag and Drop soll Text in eine JTextArea gezogen werden. Der Text soll zu dem Text der bereits in der JTextArea ist hinzugefügt werden und zwar an der Stelle an der die Maus losgelassen wird.
    Ich kenne in der drop Funktion des DropTargetListeners die x-y-Posiotion der Maus, finde aber keinen Weg diese in den passenden int-Wert als Position für den Caret umzuwandeln.

    Mein Lösungsansatz war:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    
    public void drop(DropTargetDropEvent dtde) {
        
        neuerText = (String) dtde.getTransferable().getTransferData(DataFlavor.stringFlavor);
        
        textArea.getCaret().setMagicCaretPosition(dtde.getLocation());
        
        stringVorher = textArea.getText().substring(0,textArea.getCaretPosition());
        stringNachher = textArea.getText().substring(textArea.getCaretPosition(),textArea.getText.length());
     
        textArea.setText(stringVorher + neuerText + stringNachher);
        
    }

    Laut Doku sollte setMagicCaretPosition den Caret an die entsprechende Mausposition setzen, tut dies allerdings nicht. Vielleicht hat jemand eine andere Idee wie man dieses Problem lösen kann. Vielen Dank im Voraus.

    Christian
     

  2. #2
    Avatar von HonniCilest
    HonniCilest HonniCilest ist offline Mitglied Platin
    Registriert seit
    Jun 2009
    Ort
    Java Insel
    Beiträge
    501
    Bist du dir sicher, dass du es dir nicht so schwer machst? Von wo kommt der Text, der in die TextArea eingefügt werden soll?

    http://www.java2s.com/Code/Java/JDK-...JTextField.htm
     
    Jeder Fehler, aus dem wir lernen, ist ein Erfolg...
    ...Aber mach' nicht den Fehler, nicht aus deinen Fehlern zu lernen.

  3. #3
    Christian030783 Christian030783 ist offline Mitglied Bronze
    Registriert seit
    May 2009
    Beiträge
    36
    Aus einem JTree, habe dazu Transferable und Transferhandler selbst implementiert.
    Es gibt quasi Textbausteine die im JTree verwaltet werden. Aus diesen soll ein Text in der JTextArea zusammengesetzt werden.
     

  4. #4
    Christian030783 Christian030783 ist offline Mitglied Bronze
    Registriert seit
    May 2009
    Beiträge
    36
    Wenn ich wie im Beispiel einfach mit setDragEnabled(true) ohne DropTargetListener arbeite funktioniert es ja. Dann kann ich aber nicht auf den Drop-Event reagieren. Das muss ich tun, da ein Textbaustein natürlich nur da eingefügt werden soll, wo ein anderer zu Ende ist, und nicht mittendrin
     

  5. #5
    Avatar von HonniCilest
    HonniCilest HonniCilest ist offline Mitglied Platin
    Registriert seit
    Jun 2009
    Ort
    Java Insel
    Beiträge
    501
    Hmm, nagut, aber wenn ich das richtig verstanden habe, dann sollte dir das hier vermutlich er weiterhelfen:
    int JTextComponent.viewToModel(Point pt)
    Converts the given place in the view coordinate system to the nearest representative location in the model.
    Christian030783 bedankt sich. 
    Jeder Fehler, aus dem wir lernen, ist ein Erfolg...
    ...Aber mach' nicht den Fehler, nicht aus deinen Fehlern zu lernen.

  6. #6
    Christian030783 Christian030783 ist offline Mitglied Bronze
    Registriert seit
    May 2009
    Beiträge
    36
    Das ist die Lösung, Danke
     

Ähnliche Themen

  1. [Low-Level C] Caret-Position ändern.
    Von killerkirsche im Forum C/C++
    Antworten: 1
    Letzter Beitrag: 10.07.09, 14:14
  2. Zeilennummer aus caret-Position ermitteln
    Von lockenator im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 2
    Letzter Beitrag: 23.07.07, 10:54
  3. Zeilennummer aus caret-Position ermitteln
    Von lockenator im Forum Java
    Antworten: 3
    Letzter Beitrag: 18.07.07, 13:43
  4. Position des Caret-Zeichens(Cursor) in CEdit-Feld ermitteln
    Von Padd_y im Forum VisualStudio & MFC
    Antworten: 2
    Letzter Beitrag: 12.04.07, 18:09
  5. Position von CEdit ermitteln und neue Position setzen
    Von olliss im Forum VisualStudio & MFC
    Antworten: 1
    Letzter Beitrag: 15.09.05, 19:30

Stichworte