Durch Listener lässt sich Programm nicht mehr ausführen

reinpecht

Aktives Mitglied
Hey Leute ich habe ein Problem. Ich habe einen Dialog mit Hilfe von JDialog entwickel, doch wenn ich dann die jeweiligen Buttons zum ActionListener hinzufüge wird der Dialog nicht mehr aufgerufen. Woran liegt das ?

Hier mal der Code:
Java:
import java.awt.BorderLayout;

import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class MannschaftsDialog extends JDialog{
	
	private JPanel panel = new JPanel(new BorderLayout());
	private JTextField tf = new JTextField();
	private JButton neuBtn = new JButton("Neu");
	private JButton cancelBtn = new JButton("Abbrechen");
	private MannschaftsListener listener = new MannschaftsListener();    //HIER 
	
	public MannschaftsDialog(MannschaftFrame lt ){
			super(lt, "Mannschaft eingeben", true);
			cancelBtn.addActionListener(listener);     //HIER
			panel.add(tf, BorderLayout.NORTH);
			panel.add(neuBtn, BorderLayout.WEST);
			panel.add(cancelBtn, BorderLayout.EAST);
			panel.setVisible(true);
			getContentPane().add(panel);
			pack();

	}
	
	public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new MannschaftsDialog(new MannschaftFrame()).setVisible(true);
            }
        });
    }

	public JButton getCancelBtn() {
		return cancelBtn;
	}

	public void setCancelBtn(JButton cancelBtn) {
		this.cancelBtn = cancelBtn;
	}

	public JPanel getPanel() {
		return panel;
	}

	public void setPanel(JPanel panel) {
		this.panel = panel;
	}

	public JTextField getTf() {
		return tf;
	}

	public void setTf(JTextField tf) {
		this.tf = tf;
	}

	public JButton getNeuBtn() {
		return neuBtn;
	}

	public void setNeuBtn(JButton neuBtn) {
		this.neuBtn = neuBtn;
	}

	public MannschaftsListener getListener() {
		return listener;
	}

	public void setListener(MannschaftsListener listener) {
		this.listener = listener;
	}	
}
Wenn ich die Stellen wo HIER steht ausführe, dann wird der Dialog ausgeführt aber ohne ActionListener logischer weise

Java:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class MannschaftsListener implements ActionListener {
	MannschaftsDialog md = new MannschaftsDialog(new MannschaftFrame());

	public void actionPerformed(ActionEvent arg0) {
		// TODO Auto-generated method stub
		if (arg0.getSource() == md.getCancelBtn()) {
			//md.dispose();
			System.exit(0);
		}
	}

}

Könntet ihr mir bitte helfen ?

lg
reinpecht
 
was passiert wenn ein MannschaftsDialog erzeugt wird? das Objekt wird angelegt, ein Panel wird erzeugt usw.
und wie du schon ahnst kommt es zum MannschaftsListener, der muss ja auch gleich erstellt werden

was passiert wenn ein MannschaftsListener erzeugt wird? das Objekt wird angelegt,
irrwitzigerweise das komplette JFrame neu erzeugt, wo schon sämtliche Alarmbirnen durchbrennen sollten,
nicht mal der Dialog legt sich sein JFrame neu an, Konstruktorparameter!,
vor allem wird aber wieder ein MannschaftsDialog benötigt und hier neu erzeugt

-> neuer MannschaftsDialog, der brauch wieder einen MannschaftsListener
-> neuer MannschaftsListener, der brauch wieder einen MannschaftsDialog
-> neuer MannschaftsDialog, der brauch wieder einen MannschaftsListener
-> neuer MannschaftsListener, der brauch wieder einen MannschaftsDialog
-> neuer MannschaftsDialog, der brauch wieder einen MannschaftsListener
-> neuer MannschaftsListener, der brauch wieder einen MannschaftsDialog
-> neuer MannschaftsDialog, der brauch wieder einen MannschaftsListener
-> neuer MannschaftsListener, der brauch wieder einen MannschaftsDialog
-> neuer MannschaftsDialog, der brauch wieder einen MannschaftsListener
-> neuer MannschaftsListener, der brauch wieder einen MannschaftsDialog
-> neuer MannschaftsDialog, der brauch wieder einen MannschaftsListener
-> neuer MannschaftsListener, der brauch wieder einen MannschaftsDialog
-> neuer MannschaftsDialog, der brauch wieder einen MannschaftsListener
-> neuer MannschaftsListener, der brauch wieder einen MannschaftsDialog
-> neuer MannschaftsDialog, der brauch wieder einen MannschaftsListener
-> neuer MannschaftsListener, der brauch wieder einen MannschaftsDialog
und wenn sie nicht gestorben sind.. (StackOverflowException zu sehen?)
 
Zuletzt bearbeitet von einem Moderator:
und wie könnte ich das problem lösen ?

geht es wenn ich im MannschaftListener das mache:
Java:
private MannschaftsDialog md;
	
	public MannschaftsListener(MannschaftsDialog md){
		this.md = md;
	}


€dit:
JA so geht es ;D
trotzdem danke für deine Hilfe 😀
 
trotzdem, tztz, immer wieder diese deplatzierte Wort, als wäre meine Hilfe nicht der unverzichtbare Schritt zum Sieg gewesen 😉

ich hab sogar 'Konstruktorparameter!' geschrieben, also auch das Patent auf deine weiteren Gedanken
 

Neue Themen


Zurück
Oben