ActionListener Verbesserung möglich? (This)

henpara

Bekanntes Mitglied
Hallo,
schon öfter hatte ich folgendes Problem: (vereinfacht ausgedrückt)

Ein JFrame mit Button, am Button hängt ein ActionListener, der das Fenster disposen soll und noch bischen was anderes ausführen, wenn er gedrückt wird.

Jetzt frage ich mich, wie ich ihm am günstigsten sagen kann, daß er "das Fenster, in dem Du aufgerufen wirst" schließen soll.

Ich löse das gerade so, daß ich eine "getFrame" methode impementiere, die mir die Fensterklasse zurückgibt (also return this).

im ActionListener führe ich dann getFrame().dispose() aus.

Funktioniert.

Nun meine Frage: gehts auch eleganter/einfacher?

Mfg

Für code-süchtige:
Java:
	private class MyAction implements ActionListener {
		@Override
		public void actionPerformed(ActionEvent e) {
			if (e.getSource() == rückgabe) {
				running.Global.setFile((File) fileTree.getLastSelectedPathComponent()); 
				getFrame().dispose();
			}		
		}	
	}
	public FileTreeFrame getFrame() {
		return this;
	}
 
Spinnen wir das ganze weiter, ich möchte in einer Action einen Try-Block haben, und wenn die "exception" geworfen wird, soll ein Dialog-Fenster mit eben diesem Fenster als Parent aufgehen.

zZ behelfe ich mir nach wie vor mit der "geFrame()" Methode.

also so:
Java:
	public class MyAction implements ActionListener {

		@Override
		public void actionPerformed(ActionEvent e) {
			if (e.getSource()== back) {
				getFrame().dispose();
			} else if (e.getSource() == pbe) {
				int leave = JOptionPane.showConfirmDialog(getFrame(), "Wirklich beenden?");
				switch(leave) {
				case 0: System.exit(0); break; // ok Option
				case 1: break; // nein Option
				case 2: break; // abbrechen Option
				}
			} else if (e.getSource() == dateiauswahl) {
				ftf.setVisible(true);
			} else if (e.getSource() == auslesen) {
				try {
				de.Dateilesen(running.Global.getFile(), buchstabe.getText().charAt(1));
				} catch (Exception e1) {
					JOptionPane.showMessageDialog(getFrame(), "Keine Datei ausgewählt oder Kein Text eingegeben.");
				}
			}

		}
	}
 
wie heißt die klasse in der dein actionlistener erzeugt wird. hier ein beispiel (ungetestet)

Java:
public class MyFrame extends JFrame{

 public void guiInit(){
   //... aufbau der GUI

   button.addActionListener(new ActionListener(){
     public void actionPerformed(AtionEvent e){
        JOptionPane.showMessageDialog(MyFrame.this, "Keine Datei ausgewählt oder Kein Text eingegeben.");

     }
   });
 }
}
alles klar?
 

Zurück
Oben