Zum Inhalt springen

Zwischenablage Zugriffsfehler


redictable

Empfohlene Beiträge

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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??

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...