# SWT Einstieg - gar nicht so leicht!



## Jatoll (5. Jul 2010)

Hallo,
ich bekomme hier nur Fehlermeldungen dabei hab ichs eigentlich ganz genau aus nem Toturial abgetippt:


```
package basics;

import org.eclipse.swt.*;
import org.eclipse.swt.widgets.*;
public class eigenTest {

	Display display = new Display();
	Shell shell = new Shell(display);
	shell.setSize(300,300);
	shell.setText ("Bla bli blub");
	shell.open();
	while(!shell.isDisposed()){
		if (!display.readAndDispatch())
			display.sleep();
	}
	display.dispose();
}
```

Die Fehlermeldungen sind bei 9, 10 und 11


----------



## Gast2 (5. Jul 2010)

Was sind denn die Fehlermeldungen???? 
Meine Glaskugel sagt mir, dass ein paar jars fehlen...


----------



## Jatoll (5. Jul 2010)

Multiple markers at this line
	- Syntax error on tokens, delete these 
	 tokens
	- Syntax error on token(s), misplaced 
	 construct(s)

Multiple markers at this line
	- Syntax error on token ""Bla bli blub"", delete 
	 this token
	- Syntax error on token(s), misplaced construct
	 (s)

Multiple markers at this line
	- Syntax error on token ";", { expected after this token
	- Syntax error on token "open", Identifier expected after 
	 this token


----------



## mvitz (5. Jul 2010)

Versuch das mal alles in eine main Methode zu schreiben...


```
public class EigenTest {
  public static void main(String[] args) {
...
  }
}
```


----------



## Jatoll (5. Jul 2010)

sieht noch roter aus...


----------



## Michael... (5. Jul 2010)

Dass der Code aus dem ersten Post nicht funktioniert hat nichts mit SWT zu tun, denn bei Dir steht alles in Deklarationsbereich. Steck die Zeilen 7 bis 16 mal in einen Konstruktor oder eine Methode, und falls dann noch Fehlermeldungen kommen, wäre es interessant die zu kennen.


----------



## ARadauer (5. Jul 2010)

Jatoll hat gesagt.:


> sieht noch roter aus...



Sollen wir dich jetzt nochmal bitten uns die Fehlermeldung zu nennen? 

Hast du die Jar mit dem SWT Zeugs zu deinem Build Path hinzugefügt? bzw wird org.eclipse gefunden? Ich denke nicht...

 oben bei den roten x bei den Import Deklarationen klicken -> Fix Project Setup -> add archive usw.... -> OK klicken... jetzt sollte es gehen...


----------



## Jatoll (5. Jul 2010)

nee sorry, es lag echt daran, dass es nicht in einem konstruktor oder einer methode stand.... gut dann schau ich jetzt mal wie das aussieht... die fehlermeldungen sind jedenfalls weg ^^


----------



## Jatoll (5. Jul 2010)

jetzt kommt aber die Fehlermeldung bei Zeile 22:

Multiple markers at this line
	- eigenTest.a cannot be resolved 
	 to a type
	- Syntax error on token ";", . 
	 expected


```
package basics;

import org.eclipse.swt.*;
import org.eclipse.swt.widgets.*;

public class eigenTest {

	public void starte() {
		Display display = new Display();
		Shell shell = new Shell(display);
		shell.setSize(300, 300);
		shell.setText("Bla bli blub");
		shell.open();
		while (!shell.isDisposed()) {
			if (!display.readAndDispatch())
				display.sleep();
		}
		display.dispose();
	}
	
	public static void main(String[] args) {
		eigenTest a = new eigenTest;
		a.starte();
		
	}
```


----------



## mvitz (5. Jul 2010)

```
eigenTest a = new eigenTest();
```

Da fehlen die ()

Weiterhin solltest du dir angewöhnen Klassen in CamelCase zu schreiben:

eigenTest --> EigenTest

EDIT: Und wenn du das oben 1:1 kopiert hast, dann fehlt ganz am Schluss noch eine }


----------



## Jatoll (5. Jul 2010)

ok.. also klassen werden groß geschrieben? ... merk ich mir...
also hier ist mal ein Beispiel aus dem tutorial, das ich im internet gefunden hab... und da versteh ich die ganzen displays nicht so ganz und shell usw. und warum da manchmal ein ! davor steht... könnte mir da jemand mal den Quelltext mit kommentaren versehen damit ich da vielleicht besser reinkomme?


```
public class LabelDemo {
   public static Display labelDisplay;
   public static boolean internalCall = false;
   public static void main(String[] args) {
      internalCall = true;
      labelDisplay = new Display();
      LabelDemo ld = new LabelDemo();
      ld.runDemo(labelDisplay);
   }
   public void runDemo(Display display) {
      labelDisplay = display;
      Shell shell = new Shell(display);
      shell.setSize(300,300);
      shell.setText("Label Demo");
      shell.open();
      while(!shell.isDisposed()){
      if(!display.readAndDispatch())
         display.sleep();
      }
      if (internalCall) display.dispose();
   }
}
```


----------



## fastjack (5. Jul 2010)

Paß auf die Anführungszeichen auf, die Du in Internetbeispielen findest. Oft sind das keine richtigen Anführungszeichen sondern sehen nur so ähnlich aus, dann reagiert Java mit der "Syntax error on token ..." Fehlermeldung.
Ansonsten würde ich zu Tutorials von Lars Vogel raten:

Java, Eclipse, Android and Web programming tutorials

Die sind echt gut und laufen auch wie geschmiert. Falls Du Java-Einsteiger bist, würde ich Dir empfehlen, nicht mit SWT anzufangen, sondern erstmal die Basic zu lernen.


----------



## musiKk (5. Jul 2010)

Du kannst offensichtlich kein Java oder bist sehr neu. Warum versuchst Du, auf Biegen und Brechen jetzt schon sowas kompliziertes wie ein GUI-Programm zu verstehen? Fang doch erstmal mit den Basics an. Die Javainsel wird häufig empfohlen.


----------



## Jatoll (5. Jul 2010)

ja ich bin relativ neu und relativ schlecht sag ich mal... ich muss aber SWT verstehen für den Beruf, deshalb muss das sitzen... und die Basics kann ich soweit... nur sowas wie (), groß- kleinschreibung und noch ein paar andere sachen verdaddel ich immer irgendwie


----------



## fastjack (5. Jul 2010)

Java - Codestyle (Groß- und Kleinschreibung u.v.m.)

Code Conventions for the Java(TM) Programming Language: Contents


----------



## Michael... (5. Jul 2010)

Was willst du da konkret wissen?
Ich hab keine Ahnung von SWT und noch nie was damit gemacht, aber soweit ich weiss wird das Display Objekt benötigt, um auf den Graphikkontext des Betriebssystem zu zugreifen.
Shell ist ein Programmfenster ähnlich einem JWindow oder JFrame aus Swing. Das *!* ist ein ganz normaler Java Operator um boolsche Ausdrücke zu negieren z.B. 
	
	
	
	





```
!true
```
 entspricht 
	
	
	
	





```
false
```

Der Code ab der while Schleife scheint was SWT spezifisches zu sein. Die Schleife läuft solange das Fensterobjekt (!shell.isDisposed()) nicht verworfen wurde - das Fenster also noch verwendet wird.
Um nicht unnötig Prozessorlast zu erzeugen wird mit 
	
	
	
	





```
if (!display.readAndDispatch()) display.sleep();
```
 also solange es für das Display Objekt nichts zu lesen/auszuwerten und abzuarbeiten gibt, der entsprechende Thread "schlafen" gelegt. Das ganze ist jetzt nur eine "Deutung" aufgrund der Methodennamen - wie gesagt habe ich keine Ahnung von SWT.

Als Anfänger, der noch Probleme mit den Grundlagen hast, würde ich mich erstmal mit Swing begnügen bevor ich mich mit SWT auseinander setze.


----------



## ARadauer (5. Jul 2010)

Jatoll hat gesagt.:


> und die Basics kann ich soweit.


nein

sorry das ist ein bisschen harsch aber es stimmt, du kannst die basics noch nicht.. du schreibst deinen Code ausserhalb von methoden, du schreibst Konstruktor aufrufe falsch, du weist nicht was dieser ! Operator bedeuted. Ich würde mich an deiner Stelle doch nochmal mit den ersten 4-5 Kapitel der Java Insel befassen :rtfm:, befor du dich auf SWT Anwendungen stürzt... sonst wird das nur noch müsamer für dich... Hat man die Basics mal verstanden, dann weiß man was man tut und alles erscheint irgendwie logischer ;-)


----------



## hdi (6. Jul 2010)

@TO schau mal in meine Signatur da hab ich n Videokurs gemacht - die Basics die hier von Ardauer angesprochen wurden solltest du da recht schnell verstanden haben!


----------

