SWT + Button zum schließen erstellen / Variable verändern

voodoo44

Grünschnabel
Hallo,

bin Neuling in Sachen Java & SWT.
Nun hab ich da gleich mal ne Frage:

Ich habe ein Programm geschrieben (ok, bisher nur die GUI ohne jegliche Funktionen ;-) ) - ich möchte folgendes machen:

Wenn der Button "buttonclose" gedrückt wird, dann Soll sich das Programm beenden.

Code:
    final Button buttonclose = new Button(shell, SWT.PUSH);
    buttonclose.setBounds(680, 525, 100, 35);
    buttonclose.setText("Beenden");

2. Frage:
Ich habe einen Button namen's "Übersicht", einen namen's "Seite 1" und einen namen's "Seite 2".
Beim daraufklicken soll im Fenster jeweils ein anderer Inhalt angezeigt werden ... Soweit so gut dachte ich und denke mal eine Switch-Case Anweisung wäre das richtige.

Funktioniert auch tadellos, wenn ich im Quelltext hardcoded die Variable festlege welchen Wert sie hat.

Nun will ich aber je nachdem welcher Button geklickt wurde die Variable ändern lassen (also den Inhalt).
Wie mache ich das?
 
Hallo voodoo44,

erstmal welcome on board!

Zum ersten Problem habe ich folgenden Vorschlag:
Wenn der Button "buttonclose" gedrückt wird, dann Soll sich das Programm beenden.

Java:
Button btnClose = new Button("close");
....
btnClose.addActionListener(new ActionListener() {
	public void actionPerformed(ActionEvent arg0) {
	     System.exit(0);
	}
});

Beim zweiten Problem habe ich nicht wirklich verstanden, was Du meinst...

Gruß
 
Das 2. Problem:

Ich habe mein Programm - das ist ein Java Programm basierend auf SWT.

Nun habe ich da 3 Buttons unten am Rand des Fenster's und oben im Fenster eben Text drin stehen.
Wenn ich jetzt Button eins Klicke, dann soll ein Formular in das Fenster eingeblendet werden.
Nehme ich Button 2, dann ändert sich der Inhalt in einen anderen Text und klicke ich auf Button 3, dann wird eben z.B. ein Bild angezeigt.
 
So richtig weiter bin ich immer noch nicht.... Du hast drei buttons und fragst ab, welcher button der Auslöser ist - lt. Deinem ersten posting hast Du das auch hinbekommen - und reagierst entsprechend darauf. Wo genau liegt das Problem
 
Zuletzt bearbeitet:
So, nun hab' ich auch verstanden, was Du meinst...

Also entweder hast Du einen Fehler in der Änderung der Variablen im Click-Ereignis, oder Deinen buttons fehlt sogar der entsprechende "Zuhörer" noch. Poste doch mal den Qellcode, mit dem Du auf die Button-Clicks reagierst.
 
Code:
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.*;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionAdapter;

public class Autohausverwaltung {
	public static int seite;
	
	public static void main(String[] args) {	
    Display display = new Display();
    final Shell shell = new Shell(display);
    shell.setSize(800, 600);
    shell.setText("Autohausverwaltung");
    
	   switch (seite) {
       case 2:
	   		Label introText2 = new Label(shell, SWT.NONE);
	   		introText2.setBounds(15, 20, 650, 75);
	   		introText2.setText("Autohausverwaltungs-Software\n\n Herzlich Willkommen auf der Übersichts-Seite der Autohausverwaltungssoftware Version 1.0.\n Hier erhalten Sie einen aktuellen Überblick über alle Funktionen, die dieses Tool bieten, sowie ...blablabla");
       case 1:
	   		Label introText = new Label(shell, SWT.NONE);
	   		introText.setBounds(15, 20, 650, 75);
	   		introText.setText("Autohausverwaltungs-Software\n\n Herzlich Willkommen auf der Übersichts-Seite der Autohausverwaltungssoftware Version 1.0.\n Hier erhalten Sie einen aktuellen Überblick über alle Funktionen, die dieses Tool bieten, sowie ...blablabla");
	   		Label func1Text = new Label(shell, SWT.NONE);
	   		func1Text.setBounds(15, 150, 650, 100);
	   		func1Text.setText("Funktion 1 beinhalt folgende Optionen:\nAuto hinzufügen - hier können Sie Autos hinzufügen, bearbeiten, Bilder einstellen und vieles mehr.\nDes weiteren lassen sich hier Unfallschäden, Laufleistung, Sonderausstattungen, Motorisierung des Fahrzeuges, Farbe,\nSonderausstattung und vieles mehr bearbeiten, ändern usw..\nAuch für eine detailierte Aufschlüsselung aller Kostenfaktoren, Garantiezeitraum, Erstzulassung usw. ist hier möglich.");
	   		Label func2Text = new Label(shell, SWT.NONE);
	   		func2Text.setBounds(15, 250, 650, 100);
	   		func2Text.setText("Funktion 2 beinhalt folgende Optionen:\nAuto hinzufügen - hier können Sie Autos hinzufügen, bearbeiten, Bilder einstellen und vieles mehr.\nDes weiteren lassen sich hier Unfallschäden, Laufleistung, Sonderausstattungen, Motorisierung des Fahrzeuges, Farbe,\nSonderausstattung und vieles mehr bearbeiten, ändern usw..\nAuch für eine detailierte Aufschlüsselung aller Kostenfaktoren, Garantiezeitraum, Erstzulassung usw. ist hier möglich.");

	   	    final Button buttonfunc1 = new Button(shell, SWT.PUSH);
	   	    buttonfunc1.setBounds(680, 175, 100, 35);
	   	    buttonfunc1.setText("Funktion 1");
	   	    final Button buttonfunc2 = new Button(shell, SWT.PUSH);
	   	    buttonfunc2.setBounds(680, 275, 100, 35);
	   	    buttonfunc2.setText("Funktion 2"); 
	   }
    
    final Button buttonstart = new Button(shell, SWT.PUSH);
    buttonstart.setBounds(580, 525, 100, 35);
    buttonstart.setText("Übersicht");
    buttonstart.addSelectionListener(new SelectionAdapter() {    	
    	public void widgetSelected(SelectionEvent arg0) {
	   		Label introText2 = new Label(shell, SWT.NONE);
	   		introText2.setBounds(15, 20, 650, 75);
	   		introText2.setText("Autohausverwaltungs-Software\n\n Herzlich Willkommen auf der Übersichts-Seite der Autohausverwaltungssoftware Version 1.0.\n Hier erhalten Sie einen aktuellen Überblick über alle Funktionen, die dieses Tool bieten, sowie ...blablabla");
        shell.redraw();
    	}});
    
    final Button buttonclose = new Button(shell, SWT.PUSH);
    buttonclose.setBounds(680, 525, 100, 35);
    buttonclose.setText("Beenden");
    buttonclose.addSelectionListener(new SelectionAdapter() {
    	public void widgetSelected(SelectionEvent arg0) {
    	shell.close();
    	}
    	});
    	
    shell.open();
    while (!shell.isDisposed()) {
      if (!display.readAndDispatch())
        display.sleep();
    }
    display.dispose();
  }
}

Das ist mittlerweile mein Code.

Ich schätze mal, dass ich meinen Code so abändern muss:
Code:
    final Button buttonfunc1 = new Button(shell, SWT.PUSH);
    buttonfunc1.setBounds(680, 525, 100, 35);
    buttonfunc1.setText("Funktion 1");
    buttonfunc1.addSelectionListener(new SelectionAdapter() {
    	public void widgetSelected(SelectionEvent arg0) {
    	seite = 2;
    	}
    	});

Oder?
 
Huch, ich war die ganze Zeit auf 'nem AWT Trip :rolleyes:
Aber ist ja für dein Problem nicht ganz so tragisch, denn am Listener liegts ja nicht...

Wenn Du auf den Button für die Funktion 1 klickst, dann reicht es nicht, die Variable "seite" mit dem neuen Wert zu versehen. Der Code-Teil, der diese Variable auswertet und entsprechende Änderungen vornimmt, muss natürlich auch ausgeführt werden. Also am besten das ganze in eine Prozedur auslagern und diese dann an den bestimmten Stellen aufrufen.
 
Code:
final class showMe
    {
      static void showMenu()
      {
     		Label introText = new Label(shell, SWT.NONE);
       		introText.setBounds(15, 20, 650, 75);
       		introText.setText("Autohausverwaltungs-Software\n\n Herzlich Willkommen auf der Übersichts-Seite der Autohausverwaltungssoftware Version 1.0.\n Hier erhalten Sie einen aktuellen Überblick über alle Funktionen, die dieses Tool bieten, sowie ...blablabla");
       		Label func1Text = new Label(shell, SWT.NONE);
       		func1Text.setBounds(15, 150, 650, 100);
       		func1Text.setText("Funktion 1 beinhalt folgende Optionen:\nAuto hinzufügen - hier können Sie Autos hinzufügen, bearbeiten, Bilder einstellen und vieles mehr.\nDes weiteren lassen sich hier Unfallschäden, Laufleistung, Sonderausstattungen, Motorisierung des Fahrzeuges, Farbe,\nSonderausstattung und vieles mehr bearbeiten, ändern usw..\nAuch für eine detailierte Aufschlüsselung aller Kostenfaktoren, Garantiezeitraum, Erstzulassung usw. ist hier möglich.");
       		Label func2Text = new Label(shell, SWT.NONE);
       		func2Text.setBounds(15, 250, 650, 100);
       		func2Text.setText("Funktion 2 beinhalt folgende Optionen:\nAuto hinzufügen - hier können Sie Autos hinzufügen, bearbeiten, Bilder einstellen und vieles mehr.\nDes weiteren lassen sich hier Unfallschäden, Laufleistung, Sonderausstattungen, Motorisierung des Fahrzeuges, Farbe,\nSonderausstattung und vieles mehr bearbeiten, ändern usw..\nAuch für eine detailierte Aufschlüsselung aller Kostenfaktoren, Garantiezeitraum, Erstzulassung usw. ist hier möglich.");

       	    final Button buttonfunc1 = new Button(shell, SWT.PUSH);
       	    buttonfunc1.setBounds(680, 175, 100, 35);
       	    buttonfunc1.setText("Funktion 1");
       	    final Button buttonfunc2 = new Button(shell, SWT.PUSH);
       	    buttonfunc2.setBounds(680, 275, 100, 35);
       	    buttonfunc2.setText("Funktion 2"); 
      }
      static void showText()
      {
     		Label introText2 = new Label(shell, SWT.NONE);
       		introText2.setBounds(15, 20, 650, 75);
       		introText2.setText("Autohausverwaltungs-Software\n\n Herzlich Willkommen auf der Übersichts-Seite der Autohausverwaltungssoftware Version 1.0.\n Hier erhalten Sie einen aktuellen Überblick über alle Funktionen, die dieses Tool bieten, sowie ...blablabla");
      }
    }

darauf lässt sich eben leider nicht zugreifen, da er meint "shell is not declared" (habe das ganze in eine externe Datei ausgelagert).
 
Java:
final class showMe
    {
      static void showMenu()
      {
     		Label introText = new Label(shell, SWT.NONE);
       		introText.setBounds(15, 20, 650, 75);
       		introText.setText("Autohausverwaltungs-Software\n\n Herzlich Willkommen auf der Übersichts-Seite der Autohausverwaltungssoftware Version 1.0.\n Hier erhalten Sie einen aktuellen Überblick über alle Funktionen, die dieses Tool bieten, sowie ...blablabla");
       		Label func1Text = new Label(shell, SWT.NONE);
       		func1Text.setBounds(15, 150, 650, 100);
       		func1Text.setText("Funktion 1 beinhalt folgende Optionen:\nAuto hinzufügen - hier können Sie Autos hinzufügen, bearbeiten, Bilder einstellen und vieles mehr.\nDes weiteren lassen sich hier Unfallschäden, Laufleistung, Sonderausstattungen, Motorisierung des Fahrzeuges, Farbe,\nSonderausstattung und vieles mehr bearbeiten, ändern usw..\nAuch für eine detailierte Aufschlüsselung aller Kostenfaktoren, Garantiezeitraum, Erstzulassung usw. ist hier möglich.");
       		Label func2Text = new Label(shell, SWT.NONE);
       		func2Text.setBounds(15, 250, 650, 100);
       		func2Text.setText("Funktion 2 beinhalt folgende Optionen:\nAuto hinzufügen - hier können Sie Autos hinzufügen, bearbeiten, Bilder einstellen und vieles mehr.\nDes weiteren lassen sich hier Unfallschäden, Laufleistung, Sonderausstattungen, Motorisierung des Fahrzeuges, Farbe,\nSonderausstattung und vieles mehr bearbeiten, ändern usw..\nAuch für eine detailierte Aufschlüsselung aller Kostenfaktoren, Garantiezeitraum, Erstzulassung usw. ist hier möglich.");

       	    final Button buttonfunc1 = new Button(shell, SWT.PUSH);
       	    buttonfunc1.setBounds(680, 175, 100, 35);
       	    buttonfunc1.setText("Funktion 1");
       	    final Button buttonfunc2 = new Button(shell, SWT.PUSH);
       	    buttonfunc2.setBounds(680, 275, 100, 35);
       	    buttonfunc2.setText("Funktion 2"); 
      }
      static void showText()
      {
     		Label introText2 = new Label(shell, SWT.NONE);
       		introText2.setBounds(15, 20, 650, 75);
       		introText2.setText("Autohausverwaltungs-Software\n\n Herzlich Willkommen auf der Übersichts-Seite der Autohausverwaltungssoftware Version 1.0.\n Hier erhalten Sie einen aktuellen Überblick über alle Funktionen, die dieses Tool bieten, sowie ...blablabla");
      }
    }
darauf lässt sich eben leider nicht zugreifen, da er meint "shell is not declared"...
Damit hat 'er' ja auch recht. In der Klasse ShowMe (ich hab' sie einfach mal groß geschrieben ;-)) ist shell ja auch nicht deklariert...
Ich weiss nicht, ob es an dieser Stelle so sehr angebracht ist, dafür 'ne eigene Klasse zu schreiben - ich würde in der main-Klasse eine Methode dafür schreiben.
 
Zurück