Zum Inhalt springen

Zwischenablage Zugriffsfehler


Empfohlene Beiträge

Geschrieben

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

Geschrieben

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

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 erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

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