Text von Labels und Buttons wird nicht angezeigt

hobbid

Grünschnabel
Hallo,

ich habe folgendes Problem. Ich habe mit eclipse eine kleine Anwedung erstellt.

Solange ich die Anwendung aus eclipse starte funktioniert auch alles wie gewünscht. Wenn ich die Anwendung jedoch als Jar exportiere und dann starte, wird mir auf allen Labels bzw. Buttons etc. kein Text angezeigt.
Ich denke das mir irgendeine Library fehlt leider weis ich nicht welche.

Zusätzlich zu den vom Programm benötigten libs habe ich folgene libs in meinen Classpath aufgenommen:
lib\org.eclipse.swt.win32_3.0.1\ws\win32\swt.jar;
lib\org.eclipse.osgi_3.0.1\osgi.jar;
lib\org.eclipse.osgi_3.0.1\core.jar;
lib\org.eclipse.osgi_3.0.1\resolver.jar;
lib\org.eclipse.osgi_3.0.1\defaultAdaptor.jar;
lib\org.eclipse.osgi_3.0.1\eclipseAdaptor.jar;
lib\org.eclipse.osgi_3.0.1\console.jar;
lib\org.eclipse.ui.forms_3.0.0\forms.jar;
lib\org.eclipse.core.runtime_3.0.1\runtime.jar;
lib\org.eclipse.jface_3.0.0\jface.jar;

mein Aufruf sieht wie folgt aus:
java -Djava.library.path=lib\org.eclipse.swt.win32_3.0.1\os\win32\x86 -Xmx128m -cp %CP% de.meineanwendung.MeineKlasse

So siehts aus eclipse aus
Und so wenns standalone als jar gestartet wird

Wäre klasse wenn jemand einen Tip für mich hat da ich mir das ganz nich wirklich erklären kann.

Gruss

Dirk
 

Anhänge

  • auseclipse.gif
    auseclipse.gif
    5,2 KB · Aufrufe: 84
  • standalone.gif
    standalone.gif
    5,3 KB · Aufrufe: 69
Hallo!

Hast du die Strings zu den Widgets externalisiert? Vielleicht wird einfach nur das Properties File nicht gefunden.

Gruß Tom
 
Hallo Thomas,

nein die Werte für die Labels und Buttons stehen direkt in der Klasse.

Gruss Dirk
 
Hallo,

ich habe es jetzt absolut minimalisiert.

Habe nur die Login Klasse in ein neues Projekt gesteckt und bis auf das Layout jegliche Funktionalität entfernt.

Hier der Code:
Code:
  package de.asw.fallstudie;
  
  import org.eclipse.swt.SWT;
  import org.eclipse.swt.events.SelectionEvent;
  import org.eclipse.swt.events.SelectionListener;
  import org.eclipse.swt.widgets.Button;
  import org.eclipse.swt.widgets.Canvas;
  import org.eclipse.swt.widgets.Display;
  import org.eclipse.swt.widgets.Label;
  import org.eclipse.swt.widgets.Shell;
  import org.eclipse.swt.widgets.Text;
  
  public class Login{
  
  	protected Shell shell;
  	
  	private Text txtPass;
  	private Text txtUser;
  	
  	public static void main(String[] args) {
  		try {
  			Login window = new Login();
  			window.open();
  		} catch (Exception e) {
  			e.printStackTrace();
  		}
  	}
  	
  	public void open() {
  		Display display = Display.getDefault();
  		createContents();
  		shell.layout();
  		shell.open();
  		while (!shell.isDisposed()) {
  			if (!display.readAndDispatch())
  				display.sleep();
  		}
  	}
  
  
  
  	protected void createContents() {
  		
  		
  		shell = new Shell();
  		
  		shell.setText("Login");
  		shell.setSize(344, 263);
  
  		Canvas canvas = new Canvas(shell, SWT.NONE);
  		canvas.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE));
  		canvas.setForeground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE));
  		canvas.setBounds(-1, 0, 337, 130);
  		
  		txtUser = new Text(shell, SWT.NONE);
  		txtUser.setBounds(110, 136, 200, 20);
  
  		txtPass = new Text(shell, SWT.PASSWORD);
  		txtPass.setBounds(110, 167, 200, 20);
  
  		Label labelUser = new Label(shell, SWT.NONE);
  		labelUser.setBounds(25, 140, 120, 30);
  		labelUser.setText("Benutzername:");
  
  		Label labelPass = new Label(shell, SWT.NONE);
  		labelPass.setBounds(25, 171, 120, 30);
  		labelPass.setText("Passwort:");
  
  		Button btnCancel = new Button(shell, SWT.FLAT);
  		btnCancel.addSelectionListener(new SelectionListener() {
  			public void widgetSelected(SelectionEvent e) {
  				shell.dispose();
  			}
  			public void widgetDefaultSelected(SelectionEvent e) {
  			}
  		});
  		btnCancel.setBounds(39, 202, 120, 30);
  		btnCancel.setText("Abbrechen");
  		
  		Button btnLogin = new Button(shell, SWT.FLAT);
  		btnLogin.setBounds(180, 202, 120, 30);
  		btnLogin.setText("Login");
  
  
  	}
  
  	protected void checkSubclass() {
  	}
  }

Aufrufen tue ich das ganze so:
Code:
 java -Djava.library.path=c:\Programme\eclipse\plugins\org.eclipse.swt.win32_3.0.1\os\win32\x86 -cp .\;c:\Programme\eclipse\plugins\org.eclipse.swt.win32_3.0.1\ws\win32\swt.jar;vvs.jar de.asw.fallstudie.Login

Selbes Ergebnis :-(

So langsam zweifle ich an mir !

Gruss Dirk
 
Hallo!

hab dein Beispiel mal durchgespielt und muss "leider"sagen, dass bei mir alles tadellos funktioniert. Habs allerdings auch unter Eclipse 3.1RC1 ausprobiert. Die passende SWTxxxxx.dll liegt im winnt/system32 Verzeichnis.

weiterhin wäre es vielleicht besser allgemein statt absoluter Positionierung das SWT FormLayout zu verwenden.

//package de.asw.fallstudie;
Wusste doch, dass mir das bekannt vorkommt ;-)

Gruß Tom
 

Anhänge

  • swtexample.png
    swtexample.png
    20,1 KB · Aufrufe: 130
Zurück