[Eclipse RCP] Von woanders View updaten

Status
Nicht offen für weitere Antworten.

Saxony

Top Contributor
Hiho,

ich habe eine View mit einem Label. In einer anderen Klasse, welche bspw. am COM Port lauscht möchte ich nun den Inhalt dieses Labels ändern.

1. Wie finde ich die View wo das Label geändert werden muss?
2. Wie ändere ich den Inhalt dieses Labels?

bye Saxony
 
Zuletzt bearbeitet:

Saxony

Top Contributor
Das ist ein Thread. Aber das war nur ein Beispiel. Ich meine generell von "Irgendwo" aus will ich auf die View zugreifen und dort den Text eines Labels ändern. Das "Irgendwo" ist aber schon im selben Plug-In. ;)

bye Saxony
 

Marco13

Top Contributor
???:L Ganz klasssich doch indem das Ding, das sich ändert, einen Event wirft, und die view als Listener auf das Dinge registriert ist?! ???:L
 

Koringar

Bekanntes Mitglied
Die einfachste Methode von einem Thread aus ist, diese Label oder gleich die ganze View mit zu übergeben. Und dann in dem Thread auf die Methode zum setzen des Text etc. zugreifen.

Jedoch muss das mit einer Syncronation machen:
Java:
tblMonitor.getDisplay().asyncExec(new Runnable() {
			public void run() {
				if (!tblMonitor.isDisposed()) {
					//das was du ändern willst
				}
			}
		});
oder .syncExec, jenach dem ob die View in dem Moment darauf warten soll oder nicht.

Ich würde dir aber bei Threads die Jobs Api sehr ans Herz legen, dieser kannste einem Listener übergeben und dann machste alle Änderungen nur in der View (ist sauberer).
Die Job sind im Grunde auch nur Threads, blos erweitert.

Edit:

Oder wie Marco13 es sagte, dem Thread oder Klasse einem Listener verpassen.
 
Zuletzt bearbeitet:

Saxony

Top Contributor
???:L Ganz klasssich doch indem das Ding, das sich ändert, einen Event wirft, und die view als Listener auf das Dinge registriert ist?! ???:L

Na ok so hab ichs ja schon mal versucht zu bauen.

Java:
public interface IMyListener {

	public void update();
}

Java:
//Klasse wo sich was ändert

public void setMyListener(IMyListener aListener) {
		
	this.myListener = aListener;
}

// irgendwo weiter in der Klasse
...
this.myListener.update();
...

Und meine View implementiert IMyListener und setzt sich auch als Listener mittels public void setMyListener(IMyListener aListener) in der Klasse wo sich was ändert.

In der von IMyListener implmentierten update() meines Views steht folgendes:

Java:
public void update() {
		
	this.myText.setText("asd");		
}

Das führt aber zu:

Code:
Exception in thread "AWT-EventQueue-0" org.eclipse.swt.SWTException: Invalid thread access
	at org.eclipse.swt.SWT.error(SWT.java:3884)
	at org.eclipse.swt.SWT.error(SWT.java:3799)
	at org.eclipse.swt.SWT.error(SWT.java:3770)
	at org.eclipse.swt.widgets.Widget.error(Widget.java:463)
	at org.eclipse.swt.widgets.Widget.checkWidget(Widget.java:355)
	at org.eclipse.swt.widgets.Text.setText(Text.java:1950)

Also muss ich da bestimmt was mit dem asyncExec machen aber wo und wie ist die Frage!?

Beziehungsweise müsste ich an das ominöse Display rankommen, damit die update Methode im UI Thread laufen kann!

bye Saxony
 
Zuletzt bearbeitet:

Marco13

Top Contributor
(Sorry, so als Nachtrag: Ich hatte (mal wieder) übersehen, dass es hier NICHT um Swing geht... vielleicht sollte man den Forenteil bei der übersicht der "neuen Beiträge" etwas prägnanter darstellen :oops: )
 

Saxony

Top Contributor
LoL - hat sich er ledigt!

Java:
//Klasse wo sich was ändert

public void setMyListener(IMyListener aListener) {
		
	this.myListener = aListener;
}

// irgendwo weiter in der Klasse
...

Display.getDefault().asyncExec(new Runnable() {
	public void run() {

		this.myListener.update();
	}
});
...

:)

Ist Display.getDefault() oder Display.getCurrent() das richtige ?

bye Saxony
 

Saxony

Top Contributor
(Sorry, so als Nachtrag: Ich hatte (mal wieder) übersehen, dass es hier NICHT um Swing geht... vielleicht sollte man den Forenteil bei der übersicht der "neuen Beiträge" etwas prägnanter darstellen :oops: )

Hmm - wie kommst ud von View auf SWING? Aso wegen MVC bestimmt. Ich pass mal den Titel an.
 

Saxony

Top Contributor
LoL - hat sich er ledigt!

Java:
//Klasse wo sich was ändert

public void setMyListener(IMyListener aListener) {
		
	this.myListener = aListener;
}

// irgendwo weiter in der Klasse
...

Display.getDefault().asyncExec(new Runnable() {
	public void run() {

		this.myListener.update();
	}
});
...

So zwei Fragen hab ich noch:

1. Ist Display.getDefault() oder Display.getCurrent() das richtige ?

2. Wie erkenne ich ob mein View nicht disposed ist? Weil wenn der geschlossen ist gibts ne disposed exception.

bye Saxony
 

Koringar

Bekanntes Mitglied
LoL - hat sich er ledigt!

Java:
//Klasse wo sich was ändert

public void setMyListener(IMyListener aListener) {
		
	this.myListener = aListener;
}

// irgendwo weiter in der Klasse
...

Display.getDefault().asyncExec(new Runnable() {
	public void run() {

		this.myListener.update();
	}
});
...

:)

Ist Display.getDefault() oder Display.getCurrent() das richtige ?

bye Saxony

Naja, ich würde das erstens nicht in der Klasse machen mit dem async oder sync, sonder in der Methode update selber
Java:
public void update() {
	myText.getDisplay.asyncExec{
                 public void run() {
// Würde noch empfehlen immer vorher zu prüfen ob es das Label noch gibt. Sonst
// kommt irgend wann die nächste Exception
                        if(!myText.isDisposed())
	                       this.myText.setText("asd");
                 }
        }		
}

Und das Display würde ich mir immer von der Komponente geben lassen, was du ändert willst. In deinem Fall eben das Label.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
E OSGi Eclipse Plug-in programmierung: java.lang.NullPointerException: Cannot enter synchronized block because "profile" is null Plattformprogrammierung 4
R Eclipse Bundles Plattformprogrammierung 2
Robertop RCP Command in bereits bestehendes Eclipse-Menü einbauen Plattformprogrammierung 4
T Java Projekt läuft nur in Eclipse Plattformprogrammierung 6
M Eclipse Plugin PreferencePage BooleanFieldEditor Plattformprogrammierung 1
F OSGi Plugin unter Eclipse arbeitet anders als wenn veröffentlicht Plattformprogrammierung 2
D RCP P2-Repository für Eclipse-Plugins Plattformprogrammierung 0
M Debuging in Eclipse Annotations Processor Plattformprogrammierung 0
D Nach Sprachpaket Installation kann eclipse nicht mehr gestartet werden Plattformprogrammierung 4
L0MiN Wie kann ich ein Klassendiagramm aus Eclipse heraus erstellen? Plattformprogrammierung 5
M Eclipse Probleme beim Ausführen eines Programms Plattformprogrammierung 3
feinperligekohlensaeure Eclipse Workspace gemeinsam Nutzen -> keine .project Datei Plattformprogrammierung 1
F Eclipse Build Path auf benötigte Projekte Plattformprogrammierung 4
B Daten von Eclipse extern sichern Plattformprogrammierung 2
B Eclipse zeigt Fehler nach Java-Update auf 1.8.0_40 Plattformprogrammierung 3
VfL_Freak [Eclipse] Fehleranzeige im Reiter "Problems" Plattformprogrammierung 1
S Errors in workspace bei eclipse Plattformprogrammierung 3
T eclipse bietet keine META-INF an Plattformprogrammierung 1
N Eclipse wo starten Plattformprogrammierung 6
A Eclipse schließt einfach ohne Fehlermeldung Plattformprogrammierung 4
W Eclipse vergißt beim Exportieren Resources-Ordner Plattformprogrammierung 11
A RCP Eclipse e4 und Injection-Contexts Plattformprogrammierung 0
K Eclipse fährt nicht mehr hoch. Metadatendatei schuld? Plattformprogrammierung 7
C [Eclipse RCP E4]InjectionException: no actual value was found for the argument "MDirtyable" Plattformprogrammierung 8
T Eclipse Eigenschaften hinzufügen Plattformprogrammierung 2
M RCP [Eclipse RCP 3.4] ViewTab Kontextmenu "Alle schließen" Plattformprogrammierung 0
D Problem mit eclipse Plattformprogrammierung 2
S Verschieben des Verzeichnis .eclipse aus Userprofile Plattformprogrammierung 3
A RCP Kann kein Eclipse 4 Projekt anlegen Plattformprogrammierung 0
S RCP Exportiertes RCP Produkt lädt Datei nicht, bei Start aus Eclipse wird Datei jedoch gefunden Plattformprogrammierung 6
G Eine Library in Eclipse zur Verfügung stellen Plattformprogrammierung 14
Gregorrr Eclipse RCP Product Build-Nummer + Jenkins Plattformprogrammierung 6
R Einfaches Eclipse-Plugin-Beispiel funktioniert nicht Plattformprogrammierung 5
H OSGi OSGi + Logback + slf4j - Eclipse Run Configuration Plattformprogrammierung 7
C plugin development environment eclipse Plattformprogrammierung 4
R RCP Commands nutzen / org.eclipse.ui.file.save Plattformprogrammierung 7
O Installiere externe Methode "containsNone" in Eclipse Plattformprogrammierung 2
M Keybinding in Eclipse Plugin Plattformprogrammierung 3
TheWhiteShadow RCP Konstrukt für Editor in Eclipse gesucht. Plattformprogrammierung 3
B Eclipse Probleme mit build Plattformprogrammierung 8
H Keine Hilfe/API mehr in Eclipse Juno? Plattformprogrammierung 4
B Neue SuppressWarning in Eclipse Juno Plattformprogrammierung 6
B Eclipse Property Page Plattformprogrammierung 6
B Eclipse PreferencePage Plattformprogrammierung 3
B Eclipse Plugin Einstellungsleiste Plattformprogrammierung 2
B Birt-Previewer über Eclipse Plattformprogrammierung 14
J Eclipse Plug-In für UML-Diagramme Problem Plattformprogrammierung 4
O Eclipse Plugin - Einfachstes Problem, das es gibt. Plattformprogrammierung 2
R Eclipse RCP Tabellen-View (Anfängerfrage) Plattformprogrammierung 3
C Eclipse: Notification beim umbennen von Methoden? Plattformprogrammierung 4
schalentier Eclipse Sourcecode Plattformprogrammierung 4
A Eclipse undo/redo button reagiert nicht auf Änderungen in der OperationHistory Plattformprogrammierung 5
P Eclipse M2_REPO (NON MODIFIABLE) Plattformprogrammierung 8
B Eclipse: Contextmenu id erhalten? Plattformprogrammierung 9
H Datei in eclipse wird nicht erkannt Plattformprogrammierung 3
O Neues Tastenkürzel für Eclipse Editorfenster registrieren Plattformprogrammierung 2
3 Eclipse Editor Plugin selektiert Projekt nicht Plattformprogrammierung 10
Madlip RCP eclipse.ui.bindings (Key-Problematik) Plattformprogrammierung 2
S Eclipse vs. JavaMail vs. Ubuntu vs. Windows Plattformprogrammierung 3
M eclipse führt applikationen nicht mehr aus Plattformprogrammierung 6
S Eclipse: Auf CTRL-C/CTRL-V im Package Explorer? Plattformprogrammierung 4
M Eclipse und Hilfen Plattformprogrammierung 5
G Eclipse buggt rum!!! Plattformprogrammierung 4
B Eclipse RCP und Java 7 Plattformprogrammierung 7
G RCP Eclipse Editor + Guice Plattformprogrammierung 8
T RCP Eclipse RCP: Wo/wann im Plugin ist workbench initialisiert? Plattformprogrammierung 14
G Eclipse Plug-in: wie refreshe ich eine combobox? Plattformprogrammierung 4
M Eclipse Plug-in: Wie eine Grafik einfügen? Plattformprogrammierung 20
M RCP [Eclipse RCP] Feature Export und "Fehler"... Plattformprogrammierung 3
P Eclipse speichert keine Änderungen Plattformprogrammierung 5
M Eclipse - Dokumentation nicht über das Internet benutzen Plattformprogrammierung 3
C Eclipse Plugin NoClassDefFoundError Plattformprogrammierung 4
E org.eclipse.ui.dialogs.ListSelectionDialog erzeugt ClassNotFoundException zur Laufzeit Plattformprogrammierung 4
M Eclipse Plugin Entwicklung - NoClassDefFoundError Plattformprogrammierung 10
C RCP Verständnisfrage Eclipse/Equinox Plattformprogrammierung 4
D eclipse-RCP von der Konsole baut nicht Plattformprogrammierung 3
L RCP Eclipse Popupmenu im PackageExplorer erweitern? Plattformprogrammierung 7
C Eclipse Plugin Entwicklung: Editor für Flussdiagramme Plattformprogrammierung 6
S (OSGI - EQUINOX) Welche Eclipse IDE? Plattformprogrammierung 3
C Pdf in jar datei einbinden mit eclipse Plattformprogrammierung 23
G neuer branch in SVN mit Eclipse Plattformprogrammierung 6
F RCP eclipse rcp ohne eclipse? Plattformprogrammierung 15
dzim RCP Eclipse Provisioning Plattformprogrammierung 3
G RCP Abhängigkeiten von Eclipse Plugins Plattformprogrammierung 9
K Eclipse RCP, EMF, Hibernate Problem Plattformprogrammierung 7
B RCP eigenes Eclipse Plugin wird nicht aufgelöst Plattformprogrammierung 7
T Eclipse Helios XMLUnit importieren Plattformprogrammierung 6
R Verwendung pdfbox in Maven-Projekt in Eclipse Plattformprogrammierung 3
lumo RCP wechseln der Font von Eclipse per code Plattformprogrammierung 10
lumo RCP Eclipse internationalisierung Plattformprogrammierung 5
jemandzehage Kurze Fehlernachricht beim starten in Eclipse Plattformprogrammierung 5
A RCP java.lang.ClassNotFoundException: org.eclipse.core.runtime.adaptor.EclipseStarter Plattformprogrammierung 7
P Wie bekomme ich ICompilationUnit aus dem event? bei Eclipse-Plugin Plattformprogrammierung 3
Rudolf External Libs dauerhaft in Eclipse einbinden Plattformprogrammierung 3
G RCP Eclipse UI Forms Plattformprogrammierung 10
musiKk RCP Eclipse: Speichern von Spaltenbreiten Plattformprogrammierung 9
X Datei in einem Eclipse Projekt über Plugin zugreifen Plattformprogrammierung 2
P Eclipse Help: Wie Links zu anderer Hilfeseite setzen ? Plattformprogrammierung 5
F Eclipse EMF Modelltransformation Plattformprogrammierung 3
tfa RCP Compilereinstellungen festlegen bei Eclipse-Batch-Build Plattformprogrammierung 9

Ähnliche Java Themen


Oben