SWT-GUI von aussen füllen (Multi Threaded)

Status
Nicht offen für weitere Antworten.
D

DaRolla

Gast
hallo,

ich habe vor kurzem erst mit SWT angefangen.

Ich habe ein grundlegendes Problem.

Hoffentlich kann mir hier jemand helfen.

Also:

ich habe eine SWT Klasse die Composit erweitert und ein paar Labels und ein Textfeld zeichnet.

ich habe eine Thread Klasse die Thread erweitert und die die SWT Klasse in der run-Methode startet und diese Schleife laufen lässt.

while( !shell.isDisposed() ) {
if( !display.readAndDispatch() )
display.sleep();
}

nun will ich in einer Testklasse die Thread Klasse starten.

Aber ich habe keine Kontrolle mehr über die Labels, die ich gerne beschreiben möchte.

Der Fehler:

Exception in thread "main" org.eclipse.swt.SWTException: Invalid thread access
at org.eclipse.swt.SWT.error(SWT.java:2691)
at org.eclipse.swt.SWT.error(SWT.java:2616)
at org.eclipse.swt.SWT.error(SWT.java:2587)
at org.eclipse.swt.widgets.Widget.error(Widget.java:381)
at org.eclipse.swt.widgets.Widget.checkWidget(Widget.java:284)
at org.eclipse.swt.widgets.Control.redraw(Control.java:1412)
at de.schmitz.apps.earthdawn.ArenaGui.main(ArenaGui.java:47)

Dabei rufe ich doch nur die redraw Methode auf. Auch wenn ich setText auf ein Label (welches ich per Getter durchreiche) ausführe bekomm ich diesen Fehler.

Normalerweise sollte das klappen.

Das Problem ist dass ich keine Listener einsetzen möchte, weil die GUI nur zum Anzeigen der Inhalte da ist, die ich NICHT IN DEr GUI generieren möchte sondern extern.


Liebe grüße
Marco
 

Knoxx

Mitglied
Sorry, hab grad nicht viel Zeit. Habe SWT bisher nur direkt für Eclipse-Plugins und RichClients verwendet. Aber da muss man GUI-Sachen auch als synchronThreads ausführen. Such mal nach "Display.syncExec".

Gruß,
Knoxx
 
D

DaRolla

Gast
Hey Knoxx,

vielen Dank für den Tipp. :toll:

Also das ganze geht so:

Wir haben den VIEW, also die Gui Klasse. Da darf ruhig das main drin sein (wie es manche Gui Builder sowieso schon erzeugen), und hier starten wir auch die Gui.

Der Trick ist dass wir ASYNCHRON das CONTROL als Runnable starten. :lol:

Also die Spitze vom Eisberg ist diesmal die Gui, und von hier aus werden andere Threads wiefolgt aufgerufen:


Hier die Gui Klasse:

Code:
public class SwtGui extends org.eclipse.swt.widgets.Composite {

    // Variabeln

    // Konstruktor

    // Getter und Setter, z.B. setMyTxt( String );

    // main()
    public static void main( String[] args ) {
		
        Display display = Display.getDefault();		
        Shell shell = new Shell( display );
        SwtGui inst = new SwtGui( shell, SWT.NULL );           // hier erzeugen wir eine Instanz von uns selber
        ...
        display.asyncExec( new SwtGuiThread( inst ) );         // hier wird meine Threadklasse erzeugt und gestartet
        shell.open();
        while( !shell.isDisposed() ) {                         // die Messaging Loop
            if( !display.readAndDispatch() )
                display.sleep();
        }
}//class

Hier noch die Thread Klasse, die übrigens KEIN start() im Konstruktor hat, das macht asyncExec() schon selber:

Code:
public class SwtGuiThread extends Thread {	

    // Variabeln
    private SwtGui gui = null;
	
    // Konstruktor
    public SwtGuiThread( SwtGui gui ) {                       // hier Referenz auf Gui speichern	
        this.gui = gui;
    }

    public void run() {       
        gui.setMyTxt( "juchu" );                               // über Setter direkt in die Gui schreiben
    }	
}//class
Jedenfalls noch mal vielen Dank & Liebe Grüße

DaRolla
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Jlist füllen AWT, Swing, JavaFX & SWT 4
T Bild in ein graphics füllen AWT, Swing, JavaFX & SWT 2
izoards JavaFX TableView mit Array Inhalt füllen AWT, Swing, JavaFX & SWT 1
maximizer JavaFX Accordion mit eigenen TitledPanes füllen AWT, Swing, JavaFX & SWT 0
W TableView füllen AWT, Swing, JavaFX & SWT 18
P JavaFx - Progressbar - Füllen mittels mehreren Tasks AWT, Swing, JavaFX & SWT 0
D Columns unabhängig voneinander mit Daten füllen JavaFx AWT, Swing, JavaFX & SWT 1
J Fenster mit Inhalten aus einem Array Füllen AWT, Swing, JavaFX & SWT 4
G JTable füllen AWT, Swing, JavaFX & SWT 1
F JavaFX Tabelle mit Daten füllen AWT, Swing, JavaFX & SWT 9
W JavaFX Tabelle zeilenweise mit Werten füllen und an Container anpassen AWT, Swing, JavaFX & SWT 23
J ObservableList wirft exception beim zweiten füllen. AWT, Swing, JavaFX & SWT 4
L Methode zum Füllen einer ComboBox AWT, Swing, JavaFX & SWT 4
A JTable mit Daten füllen AWT, Swing, JavaFX & SWT 1
F JavaFX ListView füllen in Controller Class AWT, Swing, JavaFX & SWT 12
K Swing JComboBox mit ArrayList füllen AWT, Swing, JavaFX & SWT 4
N JavaFX Füllen von ausgewählten Pfadelementen AWT, Swing, JavaFX & SWT 1
D Textfield bei starten füllen. AWT, Swing, JavaFX & SWT 5
S JComboBox aus anderer Klasse füllen (Java-Swing) AWT, Swing, JavaFX & SWT 0
E Panel mit Leben füllen AWT, Swing, JavaFX & SWT 2
D Graphics2D einen Bereich füllen AWT, Swing, JavaFX & SWT 1
O Swing JTable per Scrollen füllen! AWT, Swing, JavaFX & SWT 7
H Quadrate dnamisch erzeugen und beliebig füllen AWT, Swing, JavaFX & SWT 7
C Swing ImageIcon mit Bild aus Temp-Verzeichniss füllen AWT, Swing, JavaFX & SWT 15
J JEditorPane mit HTML füllen AWT, Swing, JavaFX & SWT 2
O JComboBox mit ArrayList füllen AWT, Swing, JavaFX & SWT 3
1 Liste mit Objekten Füllen AWT, Swing, JavaFX & SWT 7
S Swing JComboBox mit Datenbank füllen AWT, Swing, JavaFX & SWT 16
I Jlist dynamisch aus Datenbank füllen AWT, Swing, JavaFX & SWT 14
M JList mit 2-zeiligen Objekten füllen AWT, Swing, JavaFX & SWT 7
H JTable von anderer Klasse aus füllen AWT, Swing, JavaFX & SWT 6
C SWT Combobox mit Textdatei füllen AWT, Swing, JavaFX & SWT 2
P Swing JtextArea füllen mit setText AWT, Swing, JavaFX & SWT 7
S JComboBox mit Ergebnis einer SQL Abfrage füllen AWT, Swing, JavaFX & SWT 39
X JTable mit verschiedenen Objekten füllen AWT, Swing, JavaFX & SWT 14
C JFrame - Löschen und neu füllen AWT, Swing, JavaFX & SWT 9
C JList mit Vector füllen AWT, Swing, JavaFX & SWT 3
Ollek Realisierung: JTable zur Laufzeit mit neuen Daten füllen AWT, Swing, JavaFX & SWT 3
S Swing JTextArea während der Laufzeit füllen AWT, Swing, JavaFX & SWT 5
F Fläche invertiert füllen AWT, Swing, JavaFX & SWT 2
A Swing JTable spaltenweise füllen AWT, Swing, JavaFX & SWT 3
R Excpetion füllen/entleeren von JTable AWT, Swing, JavaFX & SWT 6
E Swing JLabel mit unicode füllen AWT, Swing, JavaFX & SWT 7
B JTabbedPane mit Enumeration dynamisch füllen AWT, Swing, JavaFX & SWT 5
K TableModel mit Daten aus Datenbank füllen AWT, Swing, JavaFX & SWT 7
M Liste mittels SwingWorker füllen klappt nicht AWT, Swing, JavaFX & SWT 10
M GridBagLayout zeilenweise füllen AWT, Swing, JavaFX & SWT 5
H Swing Tabelle nach Klick auf Button mit Daten füllen? AWT, Swing, JavaFX & SWT 2
Airwolf89 Swing Exception beim Füllen einer Tabelle AWT, Swing, JavaFX & SWT 10
E JCombobox mit Daten aus DB füllen AWT, Swing, JavaFX & SWT 9
Ollek JTable - Tabelle füllen mit einer ArrayList AWT, Swing, JavaFX & SWT 22
L JTree Selektion "füllen" AWT, Swing, JavaFX & SWT 4
N Textfeld füllen sobald es den Fokus verliert AWT, Swing, JavaFX & SWT 2
U JTable mit Daten aus einer HashMap füllen AWT, Swing, JavaFX & SWT 8
S JTree mit Daten aus Model füllen, eigenes TreeModel (gute Dokumentation des Problems) AWT, Swing, JavaFX & SWT 2
C JList: Eintrag anklicken & JTextfield mit Text aus MySQL füllen? (Screenshot dabei) AWT, Swing, JavaFX & SWT 8
F JList füllen mit LinkedList-Elementen AWT, Swing, JavaFX & SWT 21
Spot84 jtable mit checkboxnode dynamisch per arraylist füllen AWT, Swing, JavaFX & SWT 8
J jTabbedPane mit jPanel füllen AWT, Swing, JavaFX & SWT 14
N Gridlayout 2. Spalte füllen AWT, Swing, JavaFX & SWT 4
M jLabel mit Bild füllen? AWT, Swing, JavaFX & SWT 7
B Einfaches JScrollPane mit Bildern füllen AWT, Swing, JavaFX & SWT 2
ABstraCT JCombobox dynamisch füllen (erstes Element Problem) AWT, Swing, JavaFX & SWT 4
G Jpanel mit Hintergrundbild füllen? AWT, Swing, JavaFX & SWT 6
G jTable, spezille Zelle automatisch füllen AWT, Swing, JavaFX & SWT 13
P JTable/Model füllen mit Fortschrittsbalken, Var. Rückgabetyp AWT, Swing, JavaFX & SWT 2
M JList: wie füllen? AWT, Swing, JavaFX & SWT 2
O JTable mit objekt-daten füllen AWT, Swing, JavaFX & SWT 4
G jList mit ArrayList füllen AWT, Swing, JavaFX & SWT 3
G JTable aus Datenbank füllen AWT, Swing, JavaFX & SWT 4
J Dynamisches füllen von GridBagLayout: Größe der Komponenten AWT, Swing, JavaFX & SWT 4
G JTable Zeile mit Farbe füllen AWT, Swing, JavaFX & SWT 2
B Bild(pixel) füllen AWT, Swing, JavaFX & SWT 6
S JTree mit eigenen Objekten füllen AWT, Swing, JavaFX & SWT 4
A Beim Füllen von JList entsteht ein komisches Phänomen AWT, Swing, JavaFX & SWT 3
G Jtable mittels Liste füllen AWT, Swing, JavaFX & SWT 3
A JListe mit Daten füllen AWT, Swing, JavaFX & SWT 3
A Textfeld nach ereigniss füllen AWT, Swing, JavaFX & SWT 7
M JList mit unbestimmter Anzahl Panels füllen AWT, Swing, JavaFX & SWT 4
D mit swt.virtual mehrspaltige tabellen füllen AWT, Swing, JavaFX & SWT 3
R Komponente (Frame) in anderer Klasse füllen AWT, Swing, JavaFX & SWT 18
A JTable mit MySQL Datenbank füllen AWT, Swing, JavaFX & SWT 12
H JComboBox mit den Daten eines Vectors füllen ? AWT, Swing, JavaFX & SWT 7
R JTable mit Daten aus der Datenbank füllen AWT, Swing, JavaFX & SWT 3
H JTree nach instanzierung füllen AWT, Swing, JavaFX & SWT 4
H Probleme JTable zu füllen AWT, Swing, JavaFX & SWT 4
J JTable-Zeilen mit Werten füllen AWT, Swing, JavaFX & SWT 7
G Probleme beim Füllen einer JTable AWT, Swing, JavaFX & SWT 2
G JList mit Daten füllen wie die normale DOS-Konsole AWT, Swing, JavaFX & SWT 2
M JComboBox aus Datenbank mit 2 Werten füllen AWT, Swing, JavaFX & SWT 5
A Swing JTextArea - Multi-Line-Editing AWT, Swing, JavaFX & SWT 2
F Multi-Frame im vordergrund AWT, Swing, JavaFX & SWT 2
technolion FileDialog/keine Multi-Selektion vs. JFileCHooser/kein LaF AWT, Swing, JavaFX & SWT 2
J Problem beim Multi-Threading mit einem JDialog AWT, Swing, JavaFX & SWT 2
L Multi FileFilter menue. AWT, Swing, JavaFX & SWT 4

Ähnliche Java Themen


Oben