redictable Geschrieben 26. August 2010 Geschrieben 26. August 2010 Hallo erstmal, hab hier ein kleines Problem bei welchem ich einfach nicht weiterkomme. Ich habe eine Klasse, welche das Interface "ClipboardOwner" implementiert. Dieser soll ein JTextfield übergeben werden und sobald sich die Zwischenablage ändert soll der String in das JTextfield eingetragen werden. So weit so gut....Funktioniert auch AUSSER wenn man versucht aus einem anderen Java Programm zu kopieren z.B. eclipse oder auch selbstgeschriebene. Hat vlt. jemand ne Ahnung woran das liegen könnte? Ansonsten funktioniert es Wunderbar(ausser das sich das Textfeld auch aktualisiert wenn es selbst aktiv ist) Hier mal mein Code: import java.awt.Toolkit; import java.awt.datatransfer.*; import javax.swing.JTextField; import java.io.IOException; public class TextFieldClipBoardControl implements ClipboardOwner { private JTextField toControl; private Clipboard systemClipboard; private Transferable transferData; public TextFieldClipBoardControl() { this.systemClipboard = Toolkit.getDefaultToolkit().getSystemClipboard(); this.transferData = this.systemClipboard.getContents(this); this.systemClipboard.setContents(this.transferData, this); } public void lostOwnership(Clipboard clipboard, Transferable contents) { this.transferData = clipboard.getContents(this); for (DataFlavor dataFlavor : contents.getTransferDataFlavors()) { try { Object content = this.transferData.getTransferData(dataFlavor); if (content instanceof String) { this.toControl.setText(String.valueOf(content)); break; } } catch (Exception e){ } } this.systemClipboard.setContents(this.transferData, this); } public void control(JTextField tf) { this.toControl = tf; for ( DataFlavor dataFlavor : this.transferData.getTransferDataFlavors() ) { try { Object content = this.transferData.getTransferData( dataFlavor ); if (content instanceof String) { this.toControl.setText(String.valueOf(content)); break; } } catch (IOException e){ } catch (UnsupportedFlavorException e) { } } } public void put(String pPut){ StringSelection contents = new StringSelection(pPut); this.systemClipboard.setContents(contents, this); } } Und die Fehlermeldung : Exception in thread "AWT-EventQueue-0" java.lang.IllegalStateException: cannot open system clipboard at sun.awt.windows.WClipboard.openClipboard(Native Method)... Danke schonmal im vorraus für die Mühe Grüße
redictable Geschrieben 26. August 2010 Autor Geschrieben 26. August 2010 Okey hab jetzt schonmal ein bisschen was gefixt. Hab das Interface direkt in das Frame implementiert und ich hatte die API falsch verstanden. Ich dachte bei lostOwnership steht das contents für den neuen Inhalt dabei war dies der alte. Das Problem, dass ich im selben Fenster kein strg+c machen kann bleibt. Soll ich das Interface direkt in das JTextfield implementieren??
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden