GUI Programierung!

Status
Nicht offen für weitere Antworten.

Bloody-Angle

Mitglied
Hi ich habe beb kleines Programm geschrieben mit mehereren verschiedenen Fenstern(JFrame) Klassen. Ich habe eine Klasse , gewissermaßen mein Hauptmenu , von dem aus alle Anderen geöfnet werden.

Mein Problem ist, ich möchte das solage ich in meinem Hauptmenu ein neues Fenster geöffnet habe keine weiteren Fenster meines Programmes zu sehen ist

also im grundegenommen soll das Hauptmenu immer nur dan zu sehen sein wenn alle anderen Fenster geschlossen sind.

Würde es toll finden wenn ihr mir da helfen könntet^^
 

Jango

Gesperrter Benutzer
Mach es unsichtbar mit:
Code:
setVisible(false);
Und beim Schließen eines anderen Fensters (Dialog), machst es wieder sichtbar:
Code:
setVisible(true);
 

Bloody-Angle

Mitglied
Hi ne dass meinete ich nich das problem ist ja das ich es zwar invisible machen kann(setVisible(false)aber ich habe manschmal 3 oder gar 4 ketten von Fenstern offen und ich möchte das wenn Fenster4 geschlossen wird wieder Fenster3 erscheint usw. dazu mussen aber das Fenster4 wissen das es von Fenster3 geöffnet wurde , das weis es ja aber garnich :-( folglich habe ich das Problem das Fenster anzusprechen was sichtbar bzw unsicht bar werden soll
 

doctus

Bekanntes Mitglied
einfach das fenster, von dem aus aufgerufen wurde im konstruktor übergeben und in einer variable speichern. dann weiß das fenster auch, von welchem anderen fenster es aufgerufen wurde.
 

Marcel_Handball

Bekanntes Mitglied
Es ist zwar bestimmt nicht nicht die beste Variante, aber vielleicht hilft es dir ja weiter:
(am Title des Fensters kannst du immer sehen, welches gerade geöffnet ist, schließt du ein Fenster,
öffnet sich der Frame aus dem es aufgerufen wurde).

Code:
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;
import java.awt.event.WindowAdapter;;

public class Hauptprogramm{
	public static void main(String [] args){
	      Fenster f = new Fenster(null,"Hauptfenster");    
	}
}


class Fenster extends JFrame{
 
	static int i=1;
	Fenster aktuell;
	Fenster parent = null;
	
	public Fenster(Fenster u, String titel){
	  int x = 300;
	  int y = 200;
	  setTitle(titel);
	  setLocation(300, 300);
	  setSize(new Dimension(x,y));
	  setLayout(new BorderLayout());
     setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
     setResizable(false);
     aktuell = this;
     parent = u;
     setLayout(new FlowLayout());
     JButton b = new JButton("neues Fenster öffnen");
     add(b);
     b.addActionListener(new ActionListener(){
    	 public void actionPerformed(ActionEvent e) {
    		Fenster ff = new Fenster(aktuell, "Fenster " + i);
    		aktuell.setVisible(false);
    		i++;
    	} 
     });
     addWindowListener(new WindowAdapter(){
    	 public void windowClosing(WindowEvent e) {
    		 aktuell.setVisible(false);
    		 if(parent != null){
    			 parent.setVisible(true);
              i--;
    		 }else{System.exit(0);}
    	} 
     });
     setVisible(true);
	}
}
 

André Uhres

Top Contributor
Mach einfach jeweils modale "JDialog"-Fenster, wo eins der parent vom anderen ist.
Wenn du sie alle gleich gross machst, dann siehst du immer nur das letzte
und die anderen sind auch sonst nicht erreichbar.
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben