Java SWT - Controller-Ebene? Tutorial o.ä gesucht

trauergraf

Cadet 3rd Year
Registriert
Dez. 2014
Beiträge
50
Hi, bin Anfänger in Java und arbeite mich grade an ein Projekt ran. Zum ersten mal mit GUI.
SWT ist vorgegeben und habe es grade installiert. Nun ist Modell und View weniger das Problem als die Controller Ebene. Sprich: Ich habe keine Ahnung wie ich das Texteingabefeld oder einem Button nun eine Funktion zuschreibe und finde auf deutsch auch überhaupt keine Hilfe im Internet. Kennt jemand ein gutes Tutorial oder so zu SWT?

Da ich mich dämlich suche, und vermute kein gutes Tut zu finden, stell ich heir direkt meine Frage:
Code:
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.wb.swt.SWTResourceManager;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Text;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;


public class RaetselRaten {

	protected Shell shlRaetselmaschine;
	private Text txtHierAntwortEingeben;

	/**
	 * Launch the application.
	 * @param args
	 */
	public static void main(String[] args) {
		try {
			RaetselRaten window = new RaetselRaten();
			window.open();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	/**
	 * Open the window.
	 */
	public void open() {
		Display display = Display.getDefault();
		createContents();
		shlRaetselmaschine.open();
		shlRaetselmaschine.layout();
		while (!shlRaetselmaschine.isDisposed()) {
			if (!display.readAndDispatch()) {
				display.sleep();
			}
		}
	}

	/**
	 * Create contents of the window.
	 */
	protected void createContents() {
		shlRaetselmaschine = new Shell();
		shlRaetselmaschine.setToolTipText("dies ist eine r\u00E4tselmaschine, jo!");
		shlRaetselmaschine.setBackground(SWTResourceManager.getColor(SWT.COLOR_TITLE_BACKGROUND_GRADIENT));
		shlRaetselmaschine.setSize(450, 300);
		shlRaetselmaschine.setText("Raetselmaschine");
		shlRaetselmaschine.setLayout(new GridLayout(3, false));
		new Label(shlRaetselmaschine, SWT.NONE);
		new Label(shlRaetselmaschine, SWT.NONE);
		new Label(shlRaetselmaschine, SWT.NONE);
		new Label(shlRaetselmaschine, SWT.NONE);
		
		Label lblBeantworteDieFrage = new Label(shlRaetselmaschine, SWT.NONE);
		lblBeantworteDieFrage.setText("Beantworte die frage");
		new Label(shlRaetselmaschine, SWT.NONE);
		new Label(shlRaetselmaschine, SWT.NONE);
		new Label(shlRaetselmaschine, SWT.NONE);
		new Label(shlRaetselmaschine, SWT.NONE);
		new Label(shlRaetselmaschine, SWT.NONE);
		new Label(shlRaetselmaschine, SWT.NONE);
		
		txtHierAntwortEingeben = new Text(shlRaetselmaschine, SWT.BORDER);
		txtHierAntwortEingeben.setText("Hier Antwort eingeben");
		txtHierAntwortEingeben.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));
		new Label(shlRaetselmaschine, SWT.NONE);
		new Label(shlRaetselmaschine, SWT.NONE);
		
		Button btnBestaetigung = new Button(shlRaetselmaschine, SWT.NONE);
		btnBestaetigung.addSelectionListener(new SelectionAdapter() {
			@Override
			public void widgetSelected(SelectionEvent e) {
			}
		});
		btnBestaetigung.setText("Bestaetigung");

	}

}

Soweit bin ich. Grundgerüst steht also. Nun soll im Textfeld irgendwas eingegeben werden, per Klick auf "Bestätigung" Button soll dann per If-Anweisung geprüft werden ob es die richtige Antwort ist oder nicht (es gibt nur eine richtige Antwort)... Wie geh ich weiter vor?
 
Zuletzt bearbeitet:
Hallo,

schau dich einmal nach dem ActionListener um. Hier ein Beispiellink: http://www.java-tutorial.org/actionlistener.html

Code:
{
...
btnBestaetigung.addActionListener(this);
...
}

// Anfrage des ActionListeners
public void actionPerformed (ActionEvent ae){
// Stimmt das Event mit dem Button abc überein?
 if(ae.getSource() == this.btnBestaetigung){
System.out.println("Button btnBestaetigung ausgewählt.");
// Abfrage nach dem Inputfeld, ob der Text  mit "" übereinstimmt.
 if(txtHierAntwortEingeben.getText().equals("String Text")){
// richtige Antwort
}else{
// falsche Antwort
}
}
 
Zuletzt bearbeitet:
capilano schrieb:
schau dich einmal nach dem ActionListener um. Hier ein Beispiellink: http://www.java-tutorial.org/actionlistener.html]

Er nutzt SWT, da wird er mit den Swing-Sachen nicht viel anfangen können.

Aber ansonsten war der Tipp schon ganz richtig. Du liest in Deinem Listener den Text aus (das Text-Widget bietet eine entsprechende Methode) und überprüfst mittels String-Vergleich, ob er den gewünschten Inhalt hat. Je nachdem führst Du dann die gewünschte Aktion aus und zeigst z.B. einen entsprechenden Hinweis an.
 
Zurück
Oben