Hey,
ich habe ein Problem mit einer SWT Anwendung. Ich will über einen Thread Gui Elemente (Controls) in einem Composite erstellen und diese an meine Shell anhängen.
Verzichte ich auf die Composites und mache das ganze über eine Tabelle und TableItems funktioniert das prächtig.
Verwende ich Composites wird der entsprechende Code zwar aufgerufen, an der Shell ändert sich zumindest sichtbar garnichts.
Zur illustration, hier ein paar Zeilen:
Aufruf des Threads:
Code des Threads:
Ich komme leider nicht mehr weiter, und google hat mir auch nicht geholfen (zumindestens habe ich nichts hilfreiches gefunden)
Währe Toll wenn jemand hier mir auf die Sprünge helfen könnte.
Gruß
neverland
ich habe ein Problem mit einer SWT Anwendung. Ich will über einen Thread Gui Elemente (Controls) in einem Composite erstellen und diese an meine Shell anhängen.
Verzichte ich auf die Composites und mache das ganze über eine Tabelle und TableItems funktioniert das prächtig.
Verwende ich Composites wird der entsprechende Code zwar aufgerufen, an der Shell ändert sich zumindest sichtbar garnichts.
Zur illustration, hier ein paar Zeilen:
Aufruf des Threads:
Java:
Display display = new Display ();
Shell shell = new Shell (display);
shell.setText(title);
shell.setSize (700, 500);
shell.setLayout(new FillLayout(SWT.VERTICAL));
getHeader(shell,display);
WatchThread wt = new WatchThread(display,shell);
wt.start();
shell.open ();
while (!shell.isDisposed ()) {
if (!display.readAndDispatch ()) display.sleep ();
}
display.dispose ();
Code des Threads:
Java:
String sql = "SELECT * FROM `"+cfg.getSQLCollTab()+"` WHERE 1";
rs = stmt.executeQuery(sql);
while(rs.next()){
System.out.println("Result found");
Runnable r = new Runnable() {
@Override
public void run() {
//rs.getString("")
System.out.println("Plaziere Composite" + shell_ref.toString());
try {
Composite c = new Composite(shell_ref, SWT.NONE);
FillLayout fl = new FillLayout(SWT.HORIZONTAL);
c.setLayout(fl);
InputStream is = this.getClass().getClassLoader().getResourceAsStream("com/neverland/pixs/neuer_alarm_gross.png");
Image image = new Image(display_ref,is);
Label img = new Label (c,SWT.LEFT);
img.setImage (image);
img.pack ();
String text = "Neues Ereignis";
Label txt = new Label (c,SWT.LEFT);
FontData data = txt.getFont().getFontData()[0];
Font font = new Font(display_ref, data.getName(), 50, SWT.BOLD);
txt.setFont(font);
txt.setText(text);
shell_ref.setModified(true);
}catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
System.out.println("Composite sollte Plaziert worden sein!");
}
};
display_ref.asyncExec(r);
sleep(5);
}
Ich komme leider nicht mehr weiter, und google hat mir auch nicht geholfen (zumindestens habe ich nichts hilfreiches gefunden)
Währe Toll wenn jemand hier mir auf die Sprünge helfen könnte.
Gruß
neverland