Problem mit WindowListener

Status
Nicht offen für weitere Antworten.

tritko1

Bekanntes Mitglied
Habe ein Problem mit der Methode windowClosing().

Habe Sie in meine Klasse eingebunden, aber das Fenster lässt
sich trotzdem nicht schließen.

Den Window Listener habe ich auch implementiert:

Code:

public void windowClosed(WindowEvent e)
{
System.exit(0);
}//end windowClosed()

public void mouseEntered(MouseEvent arg0) {}
public void mouseExited(MouseEvent arg0) {}
public void mousePressed(MouseEvent arg0) {}
public void mouseReleased(MouseEvent arg0) {}
public void windowActivated(WindowEvent e) {}
public void windowClosing(WindowEvent e) {}
public void windowDeactivated(WindowEvent e) {}
public void windowDeiconified(WindowEvent e) {}
public void windowIconified(WindowEvent e) {}
public void windowOpened(WindowEvent e) {}


Was mache ich falsch?

Vielen Dank
 
Leider hast du noch weiteren relevaten Code nicht gepostet. Wie bindest du den/die Listener ein? Arbeitest du mit AWT oder Swing?
 
Stelle mal das komplette Programm rein. Ich hoffe, du kannst mir helfen? Danke

Code:
public class Pframe extends Frame implements ActionListener,MouseListener, WindowListener
{
	//Deklaration
	Label abfrizbart;
	Button blager;
	Button blinie;
	Button breserve;
	Label abfrizbm;
	Label textvon;
	TextField von;
	Label textbis;
	TextField bis;
	Label abfrprinter;
	List auswprinter;
	int intvon;
	int intbis;
	Frame frame;

	ExportDialog exportdialog=new ExportDialog();
	String pfad;
	String daten;
	
	
	public Pframe (Frame f,int breite, int hoehe)
		  {
		  		
			    super("Einstellungen für das Drucken der IZB´s");
				setBackground(Color.lightGray);
						
				frame=f;
				frame.addWindowListener(this);
				GridBagLayout gbl=new GridBagLayout();
				setLayout(gbl);
				frame.setSize(breite,hoehe);
				setLocation(250,250);
				
				GridBagConstraints gbc=new GridBagConstraints();
				GridBagConstraints gbv;
				
									
								//Layoutfestlegung Label
								gbc = makegbc(1, 1, 1, 1);
								gbc.fill = GridBagConstraints.NONE;
								gbc.anchor = GridBagConstraints.CENTER;
								
								//Label
								abfrizbart = new Label("Welche Art von IZB´s soll ausgedruckt werden?");
								gbl.setConstraints(abfrizbart, gbc);
								add(abfrizbart);
							
								//Layoutfestlegung Button 1
								gbc = makegbc(0, 2, 1, 1);
								gbc.fill = GridBagConstraints.NONE;
								gbc.anchor = GridBagConstraints.CENTER;
								
								//1. Button
								blager = new Button("Lager");
								gbl.setConstraints(blager, gbc);
								add(blager);

								//Layoutfestlegung Button 2
								gbc = makegbc(1, 2, 1, 1);
								gbc.fill = GridBagConstraints.NONE;
								gbc.anchor = GridBagConstraints.CENTER;
								
								//2. Button
								blinie = new Button("Linie");
								gbl.setConstraints(blinie, gbc);
								add(blinie);
								
								//Layoutfestlegung Button 3
								gbc = makegbc(2, 2, 1, 1);
								gbc.fill = GridBagConstraints.NONE;
								gbc.anchor = GridBagConstraints.CENTER;								
								
								//3. Button							
								breserve = new Button("Reserve");
								gbl.setConstraints(breserve, gbc);
								add(breserve);
						
								//Layoutfestlegung Label Frage
								gbc = makegbc(1, 5, 1, 1);
								gbc.fill = GridBagConstraints.BOTH;
								gbc.anchor = GridBagConstraints.CENTER;	
							
								//Label
								abfrizbm = new Label("Wieviel IZB´s möchten Sie ausdrucken?");
								gbl.setConstraints(abfrizbm, gbc);
								add(abfrizbm);
							
								//Layoutfestlegung Label von
								gbc = makegbc(0, 6, 1, 1);
								gbc.fill = GridBagConstraints.BOTH;
								gbc.anchor = GridBagConstraints.CENTER;
							
								//Label von
								textvon = new Label("von:");
								gbl.setConstraints(textvon, gbc);
								add(textvon);
							
								//Layoutfestlegung Textfeld von
								gbc = makegbc(0, 7, 1, 1);
								gbc.fill = GridBagConstraints.BOTH;
								gbc.anchor = GridBagConstraints.CENTER;
							
								//Textfeld von
								von = new TextField();
								gbl.setConstraints(von, gbc);
								add(von);
							
								//Layoutfestlegung Label bis
								gbc = makegbc(2, 6, 1, 1);
								gbc.fill = GridBagConstraints.BOTH;
								gbc.anchor = GridBagConstraints.CENTER;
							
								//Label bis
								textbis = new Label("bis:");
								gbl.setConstraints(textbis, gbc);
								add(textbis);
							
								//Layoutfestlegung Textfeld bis
								gbc = makegbc(2, 7, 1, 1);
								gbc.fill = GridBagConstraints.BOTH;
								gbc.anchor = GridBagConstraints.CENTER;
							
								//Textfeld bis
								bis = new TextField();
								gbl.setConstraints(bis, gbc);
								add(bis);
							
								//Layoutfestlegung Label Frage
								gbc = makegbc(1, 8, 1, 1);
								gbc.fill = GridBagConstraints.BOTH;
								gbc.anchor = GridBagConstraints.CENTER;
							
								//Label Frage
								abfrprinter=new Label("Welchen Drucker möchten Sie dafür benutzen?");
								gbl.setConstraints(abfrprinter, gbc);
								add(abfrprinter);
							
								//Layoutfestlegung Liste
								gbc = makegbc(1, 9, 1, 1);
								gbc.fill = GridBagConstraints.BOTH;
								gbc.anchor = GridBagConstraints.CENTER;
							
								//Label Frage
								auswprinter=new List();
								gbl.setConstraints(auswprinter, gbc);
								add(auswprinter);
		
								//Listener
								blinie.addMouseListener(this);
								blager.addMouseListener(this);
								breserve.addMouseListener(this);
								von.addActionListener(this);
								bis.addActionListener(this);
																	
		  						pack();	
		}//end Construktor
	
	private GridBagConstraints makegbc(int x, int y, int width, int height)
	 {
	   GridBagConstraints gbc = new GridBagConstraints();
	 gbc.gridx = x;
	   gbc.gridy = y;
	 gbc.gridwidth = width;
	   gbc.gridheight = height;
	  gbc.insets = new Insets(2, 2, 2, 2);
	  return gbc;
	}//end Method makegbc

	
	public void actionPerformed(ActionEvent ae) 
	{
		
		if (ae.getSource()==von)
		{
			try
			{
				intvon = Integer.parseInt(von.getText());
			}//endtry
			
			catch (NumberFormatException e)
			{
				System.out.println("Bitte überprüfen Sie die Eingabe. Es dürfen nur Zahlen eingegeben werden!");
			}//endcatch
			
			/*Wenn intvon größer als 0 ist, dann muss die Anfangszeile
			 * gesetzt werden
			 */
			if (intvon>0)
			{
				
			}//endif
			
			else
			{
				System.out.println("Bitte überprüfen Sie den Wert, den Sie eingegeben haben. Es dürfen nur Werte >0 eingegeben werden!");
			}//endelse
			
		}//end if von
		
		
		if (ae.getSource()==bis)
				{
					try
					{
						intbis = Integer.parseInt(bis.getText());
					}//endtry
			
					catch (NumberFormatException e)
					{
						System.out.println("Bitte überprüfen Sie die Eingabe. Es dürfen nur Zahlen eingegeben werden!");
					}//endcatch
			
					/*Wenn intvon größer als 0 ist, dann muss die Endezeile
					 * gesetzt werden
					 */
					if (intbis>0)
					{
				
					}//endif
			
					else
					{
						System.out.println("Bitte überprüfen Sie den Wert, den Sie eingegeben haben. Es dürfen nur Werte >0 und <=Anzahl der IZB´s eingegeben werden!");
					}//endelse
			
				}//end if bis
			
	}//end actionPerformed

	
	public void mouseClicked(MouseEvent me)
	{
		try
		{
			if(me.getSource()==blinie)
			{
			/* Problem liegt darin, das erst die Speicherung erfolgen
			 * muss, das man auf die Datei zugreifen kann. Als Beispiel
			 * nehme ich einen beliebigen Dateinamen, der existiert
			 */
		
			FileReader fr=new FileReader("D:/Documents and Settings/DLBWMRC/Projekt SAP Richter/FS_IZB_test.txt");
			BufferedReader br=new BufferedReader(fr);
		
			}//endif
			
			if (me.getSource()==blager)
			{
				//gleiche Problem wie blinie
				FileReader fr=new FileReader("D:/Documents and Settings/DLBWMRC/Projekt SAP Richter/FS_IZB_test.txt");
				BufferedReader br=new BufferedReader(fr);
			}//endif
			
		}//endtry
		
		catch (FileNotFoundException e)
		{
			System.out.println("Die Datei wurde nicht gefunden!");
		}//endcatch FileNotFound
		
		
		
	}//end Mouseclicked()
	
	public void windowClosed(WindowEvent e) 
	{
	System.exit(0);
	}//end windowClosed()
			
	public void mouseEntered(MouseEvent arg0) {}
	public void mouseExited(MouseEvent arg0) {}
	public void mousePressed(MouseEvent arg0) {}
	public void mouseReleased(MouseEvent arg0) {}
	public void windowActivated(WindowEvent e) {}
	public void windowClosing(WindowEvent e) {}
	public void windowDeactivated(WindowEvent e) {}
	public void windowDeiconified(WindowEvent e) {}
	public void windowIconified(WindowEvent e) {}
	public void windowOpened(WindowEvent e) {}
	
		   
}//end class

L-ectron-X hat diesen Beitrag am 10.11.2006 um 9:51 editiert.
Code-Tags gesetzt.
 
bitte die code-tags verwenden 😳

(tu mal das System.exit(0) in windowClosing, nicht in windowClosed)
 
Irgendwie kann ich auch die Buttons, Labels und Texfelder nicht so richtig positionieren.

Soll ich am besten den Visual Editor oder Jbuilder benutzen?

Danke
 
die Operation
public void windowClosing(WindowEvent e) {}
ist leer, also passiert nix,
du da wunderst du dich?

mache zumindest
public void windowClosing(WindowEvent e) {
System.out.println("windowClosing");
}

um zu sehen ob etwas passieren KÖNNTE
 
Es steht doch in WindowClosed system.exit.

Das müsste langen. Habe deine Version ausprobiert - geht auch nicht.

Wieso sollte ich mich wundern?

Einer der beiden Methoden müsste doch genügen, oder?
 
WindowsClosed ist meines Wissen dafür da, etwas auszuführen, wenn das Fenster bereits geschlossen ist, was es nicht wird, weil WindowsClosing leer ist.

Bitte nicht schlagen, wenn ich mich jetzt irre 😉
 
vielleicht klickst du auf das Schließen beim Pframe,
den WindowListener hast du aber nur bei dem im Konstruktor übergebenen Frame geadded..

ich sehe in deinem Code nirgendwo ein setVisible(true) oder show() und keine main,
solange die fehlen kann man es also nicht testen sondern nur blind raten,

wenn du noch ein vollständiges Programm posten willst,
dann entferne auf jeden Fall vorher alles was irgendwie mit GridBagConstraints zu tun hat,
die enthaltenen Textfelder sind doch irrelevant
 
Ich habe eine neue Klasse geschrieben, in dem ich den Konstruktor aufrufe und diese Pframe mit setVisible (true) anzeigen lasse.

"wenn du noch ein vollständiges Programm posten willst,
dann entfernt auf jeden Fall vorher alles was irgendwie mit GridBagConstraints zu tun hat,
die enthaltenen Textfelder sind doch irrelevant".

--> Was meinst du damit?

Weiß auch nicht, was ich falsch mache - jedenfalls geht dieses Frame mit dem x nicht weg.
 
meinen Hinweis

> vielleicht klickst du auf das Schließen beim Pframe,
> den WindowListener hast du aber nur bei dem im Konstruktor übergebenen Frame geadded..

ignorierst du komplett?

schreibe mal
frame.addWindowListener(this);
addWindowListener(this);

statt nur
frame.addWindowListener(this);

> --> Was meinst du damit?
dass du ein komplett lauffähiges Programm (mit main und allem drum und dran)
mit maximal 50 Zeilen posten sollst, nicht so ein unvollständiges Programm mit unnötigen Ballast das dann 300 Zeilen oder noch länger ist
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben