SWT Composite bleibt leer

Status
Nicht offen für weitere Antworten.

Aldimann

Bekanntes Mitglied
Hallo zusammen,

ich hab grad mal wieder was zusammen gebastelt und festgestellt, dass mein Comp leer bleibt.

Es liegt nicht an den Layouts (zumindest hab ich das zu genüge rumgebastelt).

Es stimmt allerdings irgendetwas mit meinem Comp nicht, denn ich kann die Elemente auf der Shell direkt anzeigen lassen.

Leider komm ich absolut nicht drauf was es ist 🙁...

[HIGHLIGHT="Java"]import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
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 View {

public Display display = new Display();
public Shell shell = new Shell(display);


public void createShell() {

Composite comp = new Composite(shell, SWT.NONE);


shell.setLayout(new FillLayout());
GridLayout gridlayout = new GridLayout();
gridlayout.numColumns = 2;

comp.setLayout(gridlayout);


Textmodel textModel = new Textmodel();

shell.setText(textModel.getShellTitle());


shell.setSize(300, 500);

//Legt die Oberflaeche an



Label lblDate = new Label(comp, SWT.None);
Text txtDate = new Text(comp, SWT.None);

new Label(comp, SWT.None);
new Label(comp, SWT.None);


Label lblStartTime = new Label(comp, SWT.None);
Text txtStartTime = new Text(comp, SWT.None);

new Label(comp, SWT.None);
new Label(comp, SWT.None);

Label lblEndTime = new Label(comp, SWT.None);
Text txtEndTime = new Text(comp, SWT.None);

new Label(comp, SWT.None);
new Label(comp, SWT.None);

Label lblPauseTime = new Label(comp, SWT.None);
Text txtPauseTime = new Text(comp, SWT.None);

lblStartTime.setText(textModel.getTextOfStartTimeLabel());
lblEndTime.setText(textModel.getTextOfEndTimeLabel());
lblPauseTime.setText(textModel.getTextOfPauseTimeLabel());
lblDate.setText(textModel.getTextOfDateLabel());

txtStartTime.setText(textModel.getTextOfStartTimeText());
txtEndTime.setText(textModel.getTextOfEndTimeText());
txtPauseTime.setText(textModel.getTextOfPauseTimeText());
txtDate.setText(textModel.getTextOfDateText());


}


}[/HIGHLIGHT]

hoffe ihr könnt helfen

Vielen dank...
 
Zuletzt bearbeitet von einem Moderator:
textmodel soll die gesamten Texte für die GUI beinhalten, somit kann man später leichter Rechtschreibfehler ausbesser, Sachen ändern usw.

Doch die beinhaltet Texte, selbst wenn nicht, dann müsste er doch die Textfelder anzeigen :/
 
textmodel soll die gesamten Texte für die GUI beinhalten, somit kann man später leichter Rechtschreibfehler ausbesser, Sachen ändern usw.
Dafür externalisiert man eigentlich die Strings in eine Properties Datei (auch aus Gründen der Übersetzung später). Externalisieren kann jede IDE, für Übersetzungen gibt es in Java bereits support (NLS ist das Stichwort).

Doch die beinhaltet Texte, selbst wenn nicht, dann müsste er doch die Textfelder anzeigen :/
Einen groben Fehler sehe ich erstmal nicht. Was mich jedoch wundert, ist, dass du in der Klasse ein Display instanzierst. Deine Read and Dispatch Schleife liegt vermutlich wo anders, aber warum hier ein neues Display?
 
Zuletzt bearbeitet von einem Moderator:
Eben genau das war der Sinn,

wollte allerdings das erstmal so laufen lass und dann später ggf. einfach nur die Methoden der textmodel abändern.

Aber evtl schau ich mir das ganze gleich mal an danke 🙂.


Ja habe eine kurze Klasse die eigentlich nur von static auf dynamisch geht und View instanziiert und dann die Methode createShell aufruft.

Und für eben die Read Dispatch schleife brauch ich doch display oder nicht?
 
Zeig doch mal bitte wie und wo du das benutzt und wie und wo die Dispatch Schleife implementiert ist.
 
[HIGHLIGHT="Java"]public class StarterKlasse {

public static void main(String[] args) {

View view = new View();

new StarterKlasse(view);

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

public StarterKlasse(View view) {

view.createShell();
}

}[/HIGHLIGHT]
 
Zuletzt bearbeitet von einem Moderator:
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben