2012-04-06 6 views
1

Ich versuche, eine Anwendung zu machen, die - in einem gewissen Stadium - speichert alle kopierten Aussagen von CTRL +C, und die Manipulation der ‚Puffer‘ die aktuelle Anweisung trägt zu eine spezifische AussageBuffer trägt gespeicherten Anweisung mit Strg + C

Beispiel: gedrückte Benutzer CTRL + C der „Hallo“ zu kopieren, wenn er CTRL + V jederTextBereich/Feld drückt würde das geschriebene Wort „Hallo“ sein, Ich möchte, dass die schriftliche Aussage "Test" ist anstelle von "Hello"

ist die Frage: Wie kann man auf den Puffer zugreifen, der die kopierte Anweisung enthält, und den Inhalt mit Java manipulieren?

+0

Sie möchten also den Inhalt der Zwischenablage des Betriebssystems komplett ändern? Nein danke. –

+2

möglich Duplikat von [Kopieren in die Zwischenablage in Java] (http://stackoverflow.com/questions/3591945/copying-to-clipboard-in-java) –

+0

@ BlueRaja-DannyPflughoeft yup, das ist, was ich wirklich wollte, aber konnte nicht t drücke es in einer guten Aussage aus, thx –

Antwort

1
public static void main(String[] args) throws Exception 
    { 
    // Get a reference to the clipboard 
    Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard(); 

    // Poll once per second for a minute 
    for (int i = 0; i < 60; i++) 
    { 
     // Null is ok, because, according to the javadoc, the parameter is not currently used 
     Transferable transferable = clipboard.getContents(null); 

     // Ensure that the current contents can be expressed as a String 
     if (transferable.isDataFlavorSupported(DataFlavor.stringFlavor)) 
     { 
     // Get clipboard contents and cast to String 
     String data = (String) transferable.getTransferData(DataFlavor.stringFlavor); 

     if (data.equals("Hello")) 
     { 
      // Change the contents of the clipboard 
      StringSelection selection = new StringSelection("Test"); 
      clipboard.setContents(selection, selection); 
     } 
     } 

     // Wait for a second before the next poll 
     try 
     { 
     Thread.sleep(1000); 
     } 
     catch (InterruptedException e) 
     { 
     // no-op 
     } 
    } 
    } 

Ich habe Polling für einige einfache Testbarkeit/Verifikation hinzugefügt. Es überprüft die Zwischenablage einmal pro Sekunde für eine Minute. Soweit mir bekannt ist, gibt es keine Möglichkeit, eine ereignisbasierte Benachrichtigung vorzunehmen (es sei denn, du hörst auf Veränderungen im Geschmack zu, was du nicht bist), also denke ich, dass du mit der Umfrage nicht weiterkommst.