2 GUIs verbinden

Boris0605

Grünschnabel
Hi Leute,

ich habe momentan ein Java-Projekt am laufen: mein erstes :)

Habe mehrere GUIs (swt) erstellt. Alle GUIs sind jeweils in einer separaten Klasse. Alles ist ueber ein package miteinander verbunden.

So...da ich noch Anfaenger bin und auch ueber die SUFU nichts passendens gefunden haben, hier mal meine Frage: Wie kann ich die GUIs miteinander verbinden?

Ich habe quasi eine Main-GUI, also das Hauptfenster und moechte ueber Menue(unter)punkte und Buttons die anderen Fenster (GUIs) aufrufen.
Ich weiss, dass es irgendwie mit dem (Selection)Listener funktioniert, aber ich weiss nicht genau wie?

Fuer Tipps/Links/Beispiele waere ich sehr dankbar!

(Falls erforderlich adde ich noch den Code von der MainKlasse und einem anderen Fenster, was aufgerufen werden soll)

mfg
Boris!
 
Hallo!

da ich nicht zu viel vorsagen will... nur ein paar Tipps, wenn du damit nicht weiterkommst, versuch es mittels Beispielen zu erklären :)

Du addest einen SelectionListener zu deinem Menüpunkt ... z.B. openWindow
in deiner widgetSelected Methode erstellst du dir ein neues Objekt deiner zweiten Fensterklasse ... zweitesFenster window = new zweitesFenster(), du verstehst sicher, was ich meine :)
nun sollte sich (bei gescheiter Programmierung schon dein neues Fenster öffnen)!

Denk dran nach gebrauch das ding zu disposen :)

SWT JFace Snippets
Da findest du einige schöne Beispielcodes...

Gruß
Felix
 
Danke Wyatt,
habe gerade geschafft mit einen Button das Fenster über ein Selectionlistener zu schließen...:)

abbrechen.addSelectionListener(new SelectionListener( ) {

public void widgetSelected(SelectionEvent e) {
System.exit(0);
}
public void widgetDefaultSelected(SelectionEvent e) {
}
});
 
So....
Nach Wochen rumprobieren, kriege ich das immer noch nicht hin!
Ich weiss nicht was ich falsch mache!
Ich bitte doch dringends um HILFE! :D

mein Programm wird durch meine Klasse MainFrame aufgerufen und soll das Fenster/die Klasse DetailFrame per Klick auf den Button details öffnen:

Mein Listener im MainFrame sieht so aus:

Code:
package our.pack;

import org.eclipse.swt.*;
import org.eclipse.swt.widgets.*;
import org.eclipse.swt.events.*;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.graphics.Image;


public class MainFrame {

	Display mdisplay = new Display();
	Shell mframe = new Shell(mdisplay);

	public MainFrame(){

……………bla…………bla………….bla……

//Buttons	
		Button details = new Button(mframe, SWT.TOGGLE);
		details.setToolTipText("Details der markierten Person anzeigen");
		details.setText("Details");
		details.setLocation(23,520);
		details.setSize(350,20);

……………bla…………bla………….bla……

//Listeners

            Listener detailsListener = new Listener() {
            public void handleEvent(Event event) {
                  DetailFrame df=new DetailFrame();
                  df.showdframe();
            }
          };

    details.addListener(SWT.Selection, detailsListener);

……………bla…………bla………….bla……


Mein DetailFrame sieht so aus:

Code:
package our.pack;

import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.*;
import org.eclipse.swt.graphics.Image;

public class  DetailFrame{   

      Display ddisplay = new Display();
      Shell dframe = new Shell(ddisplay){

      public  DetailFrame(){  

            //Fenster         
            dframe.setSize(400,600);
            dframe.setText("Details");
            dframe.setImage(new Image(ddisplay, "red.gif"));

……………bla…………bla………….bla……


}

public void showdframe(){

      dframe.setVisible(true);     

}

}

Hoffe Ihr könnt mir weiter helfen!
Danke im Voraus!
 
Hallo!

da ich mit deinem Quellcode gerade wenig anfangen kann, hab ich schnell zwei Beispiele aus dem Netz gesucht...

1.) Example [ 1 ]
2.) Example [ 2 ]

Vielleicht hilft dir das ja ein wenig weiter...
Sorry, dass ich nicht mehr tun kann momentan!

Viel Glück!
Felix

EDIT:
Gerade erst gesehen... ruf statt setVisible() mal open() auf... mal sehen, was passiert =]
Der brauch wohl auch eine ganze Schleife
Java:
dframe.pack(); // nicht unbedingt notwendig - einfach mal testen
dframe.open();
while (!shell.isDisposed ()) 
			if (!display.readAndDispatch ()) 
				display.sleep ();
		display.dispose ();
 
Zuletzt bearbeitet:
Zurück