JDialog muss man immer öfters schliessen

Status
Nicht offen für weitere Antworten.

Deception

Mitglied
Hey Leute,
habe mich durch alle Themen zu "JDialog" durchgelesen und nichts gefunden.
Kurz mein Problem:
Ich habe eine JTable und rufe über ein JPopupMenu ein Dialog auf. Nun gibt es mit den Dialogen, die über das JPopupMenu aufgerufen werden Probleme.
Das erste Problem ist das sie weder auf dialog.dispose() noch auf dialog.setVisible(true); reagieren. Sie reagieren nur auf das schöne kleine X oben rechts in der Ecke.
Das zweite Problem ist das sie beim ersten Aufruf genau EINMAL geschlossen werden müssen. Beim zweiten Aufruf jedoch genau ZWEIMAL. Beim dritten Aufruf... na ihr könnts euch denken ;) Genau 3 mal! Die Reihe setzt sich fort und ich habe keine Ahnung wie ich das wegbekommen soll. Dialoge, die über eine MenuBar aufgerufen werden zeigen dieses Problem NICHT! :|

Naja, jedenfalls hier der Code des Dialogs, und des Events.

Code:
//ActionEvent zum Aufrufen des Dialogs
public class JPopupAction
{
	private ActionListener popupListener = new ActionListener()
	{
		public void actionPerformed(ActionEvent me)
		{
			if(me.getSource() == MyJPopupMenu.getEditieren())
			{
				BuchEditieren edit = new BuchEditieren();
			}
			else if(me.getSource() == MyJPopupMenu.getVerleihedit())
			{
				new VerleihEditieren();
			}
			else if(me.getSource() == MyJPopupMenu.getVerleihloeschen())
			{
				JTable table = new MyFrame(1).getTable();
				String anzahl = (String) table.getValueAt(table.getSelectedRow(),5);
				table.setValueAt("Nicht Verliehen",table.getSelectedRow(),3);
				table.setValueAt("",table.getSelectedRow(),4);
				table.setValueAt(anzahl,table.getSelectedRow(),5);
				new MyFrame(1).setTable(table);
			}
		}
	};
	
	public ActionListener getPopupListener()
	{
		return popupListener;
	}
}
Code:
//Dialog
public class VerleihEditieren
{
	private final int column = 4;

	private int selectedRow;
	private static VerleihEditierenAction aListener = new VerleihEditierenAction();
	private static VerleihEditierenMouse mListener = new VerleihEditierenMouse();
	private JButton aendern;
	private JButton close;
	private JTextField anWentxt;
	private JDialog dialog;
	private JTable table;
	private JLabel anWenlbl = new JLabel("An Wen?");
	public VerleihEditieren()
	{
		aendern = new JButton("Ändern");
		close = new JButton("Schliessen");
		anWentxt = new JTextField();
		MyFrame frame = new MyFrame(1);
		table = frame.getTable();
		selectedRow = table.getSelectedRow();
		dialog = new JDialog(frame.getJFrame(),"Verleih Bearbeiten", true);
		dialog.setLayout(new VerleihEditierenLayout());
		System.out.println(selectedRow);
		System.out.println(column);
		anWentxt.setText(table.getValueAt(selectedRow,column).toString());
		dialog.add(anWenlbl);
		dialog.add(anWentxt);
		aendern.addActionListener(aListener.getVerleih());
		aendern.addMouseListener(mListener.getMouseListener());
		dialog.add(aendern);
		close.addActionListener(aListener.getVerleih());
		close.addMouseListener(mListener.getMouseListener());
		dialog.add(close);
		dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
		dialog.setSize(200,150);
		dialog.setVisible(true);
	}
	public VerleihEditieren(int i)
	{
		
	}
	public JTextField getAnWentxt()
	{
		return anWentxt;
	}
	public JTable getTable()
	{
		return table;
	}
	public String getNewValue()
	{
		return anWentxt.getText();
	}
	public JButton getClose()
	{
		return close;
	}
	public JButton getAendern()
	{
		return aendern;
	}
	public void close()
	{
		dialog.setVisible(false);
	}
	public int getSelectedRow()
	{
		return selectedRow;
	}
	public int getColumn()
	{
		return column;
	}
	public void setNewCursor(Cursor newCursor)
	{
		dialog.setCursor(newCursor);
	}
}

Code:
public class BuchEditieren extends JDialog
{
	private static final long serialVersionUID = 3986484437896951948L;
	private static MyFrame frame = new MyFrame(1);
	private JLabel titellbl = new JLabel("Titel");
	private JLabel autorlbl = new JLabel("Autor");
	private JLabel isbnlbl = new JLabel("ISBN");
	private JLabel anzahllbl = new JLabel("Anzahl");
	
	private JTextField titeltxt = new JTextField();
	private JTextField autortxt = new JTextField();
	private JTextField isbntxt = new JTextField();
	private JTextField anzahltxt = new JTextField();
	
	private JButton aendernbtn = new JButton("Ändern");
	private JButton closebtn = new JButton("Schliessen");
	
	private BuchEditierenAction aListener = new BuchEditierenAction();
	
	private BuchEditierenMouse mouseListener = new BuchEditierenMouse();
	
	
	public BuchEditieren()
	{
		super(frame.getJFrame(), "Buch Editieren", true);
		
		JTable table = frame.getTable();
		int selectedRow = table.getSelectedRow();
		setLayout(new BuchEditierenLayout());
		
		titeltxt.setText(table.getValueAt(selectedRow,0).toString());
		titeltxt.addMouseListener(mouseListener.getBuchEditieren());
		autortxt.setText(table.getValueAt(selectedRow,1).toString());
		autortxt.addMouseListener(mouseListener.getBuchEditieren());
		isbntxt.setText(table.getValueAt(selectedRow,2).toString());
		isbntxt.addMouseListener(mouseListener.getBuchEditieren());
		anzahltxt.setText(table.getValueAt(selectedRow,5).toString());
		anzahltxt.addMouseListener(mouseListener.getBuchEditieren());
		
		isbntxt.setDocument(new IntegerDocument('-'));
		anzahltxt.setDocument(new IntegerDocument());
		
		getContentPane().add(titellbl);
		getContentPane().add(autorlbl);
		getContentPane().add(isbnlbl);
		getContentPane().add(anzahllbl);
		getContentPane().add(titeltxt);
		getContentPane().add(autortxt);
		getContentPane().add(isbntxt);
		getContentPane().add(anzahltxt);
		getContentPane().add(aendernbtn);
		closebtn.addActionListener(aListener.getEditieren());
		getContentPane().add(closebtn);
		
		setDefaultCloseOperation(DISPOSE_ON_CLOSE);
		
		setSize(250,250);
		setVisible(true);
	}
	public BuchEditieren(int i)
	{
		
	}
	public void setNewCursor(Cursor newCursor)
	{
		setCursor(newCursor);
	}

	/**
	 * @return Returns the anzahltxt.
	 */
	public JTextField getAnzahltxt() {
		return anzahltxt;
	}

	/**
	 * @return Returns the autortxt.
	 */
	public JTextField getAutortxt() {
		return autortxt;
	}

	/**
	 * @return Returns the isbntxt.
	 */
	public JTextField getIsbntxt() {
		return isbntxt;
	}

	/**
	 * @return Returns the titeltxt.
	 */
	public JTextField getTiteltxt() {
		return titeltxt;
	}

	/**
	 * @param anzahltxt The anzahltxt to set.
	 */
	public void setAnzahltxt(JTextField anzahltxt) {
		this.anzahltxt = anzahltxt;
	}

	/**
	 * @param autortxt The autortxt to set.
	 */
	public void setAutortxt(JTextField autortxt) {
		this.autortxt = autortxt;
	}

	/**
	 * @param isbntxt The isbntxt to set.
	 */
	public void setIsbntxt(JTextField isbntxt) {
		this.isbntxt = isbntxt;
	}

	/**
	 * @param titeltxt The titeltxt to set.
	 */
	public void setTiteltxt(JTextField titeltxt) {
		this.titeltxt = titeltxt;
	}
	public void close()
	{
		dispose();
	}
}

Ich hoffe ihr könnt mir weiterhelfen, ich bin echt schon am Verzweifeln. Wie so oft halt ;)
mfg,
Jens

EDIT: HAtte eine "falsche" Klasse kopiert. Mit der habe ich allerdings das selbe Problem. Habe nun noch einen Dialog angefügt, vlt erhöht das die Chance den Fehler schnell zu finden ;)
 

Deception

Mitglied
Heyho,
das KSKB hat mir nicht wirklich geholfen :/ Ich habs nun in einer mehrstündigen Aktion gelöst.
Wieso der Dialog öfters aufging, schien am Popup gelegen zu haben. Jetzt, wo ich die Elemente zur Laufzeit erst Initialisiere funktioniert es. Kann mir vielleicht wer erklären warum? Wie gesagt das alles war mehr ein rumprobieren und nun wüsste ich gerne den Hintergrund, damit ich daraus wirklich was lernen kann.
Das andere habe ich gelöst indem ich direkt in der Dialog Klasse den ActionListener implementiere. Auch dies ging dann für mich unverständlicherweisse :| Ist es nicht egal ob ich die Methode von einer anderen Klasse aufrufe oder intern Aufrufe, solange die Aufrufe stimmen? Denn "in die Methode kam" er ja. Hab ich ein System.out.println() gemacht, so wurde dies auch angezeigt...
Falls mir dies wer erklären kann, wäre sehr nett ;)
Und bitte um Entschuldigung wegen dem vielen Code, werde mir das mitm KSKB nun immer erstmal zu Herzen nehmen ;)
mfg,
Jens


EDIT:
Es hin eindeutig an dem Objekt orientierten. Ich habs halt ALS noch nicht so drauf ;D
 
G

Guest

Gast
Ja, hey, ganz aktuell... :)
Hatte dasselbe Problem, bei mir lag es irgendwie daran, dass ich "private static" bei der Buttonerstellung verwendet hatte.

Ciao,
U!rich
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
E JDialog mit count down timer AWT, Swing, JavaFX & SWT 1
H JDialog in Größe ändern - Resize-Cursor bleibt betreten der Komponente AWT, Swing, JavaFX & SWT 1
A ViewController (IFrame) > Jdialog > Model AWT, Swing, JavaFX & SWT 1
J Ablaufsteuerung/Anleitung machen mit JDialog und einer Zustandsmaschine AWT, Swing, JavaFX & SWT 1
L Swing JDialog ton beim klicken ausstellen AWT, Swing, JavaFX & SWT 1
L JDialog hat manchmal keinen Inhalt AWT, Swing, JavaFX & SWT 2
Drachenbauer Hauptfenster erhält schmale Streifen rechts unt unten, wenn ich einen JDialog hinzufüge. AWT, Swing, JavaFX & SWT 19
it_is_all Warum wird die JTable im JDialog nicht angezeigt? AWT, Swing, JavaFX & SWT 1
B Eingaben im JDialog abwarten AWT, Swing, JavaFX & SWT 4
S Swing JDialog mit KeyEvent als Rückgabe AWT, Swing, JavaFX & SWT 1
O Swing JDialog öffnen und dann warten bis er geschlossen wurde AWT, Swing, JavaFX & SWT 2
stylegangsta JDialog bestimmte Zeilen kursiv AWT, Swing, JavaFX & SWT 20
M LayoutManager Modalen JDialog ein Layout zuweisen AWT, Swing, JavaFX & SWT 3
Bluedaishi JDialog modal und JTextArea AWT, Swing, JavaFX & SWT 4
L KeyListener für JDialog AWT, Swing, JavaFX & SWT 7
T Event Handling JDialog schließen, sobald ein neuer erzeugt wird AWT, Swing, JavaFX & SWT 3
D jButton auf von jFrame erzeugtem jDialog AWT, Swing, JavaFX & SWT 16
D Button auf geöffnetem JDialog AWT, Swing, JavaFX & SWT 5
N Definitionen JDialog AWT, Swing, JavaFX & SWT 7
L JDialog - Event wenn Parent größe ändert AWT, Swing, JavaFX & SWT 2
Joew0815 JDialog repaint() funktioniert nicht wie gewünscht. AWT, Swing, JavaFX & SWT 2
D Swing Schließen von JDialog soll auch JFrame schließen. AWT, Swing, JavaFX & SWT 4
N Swing Fragen zu non-modal JDialog AWT, Swing, JavaFX & SWT 1
F Swing JDialog schließen - WindowListener bekommt dispose nicht mit AWT, Swing, JavaFX & SWT 0
N JDialog als Progress-Anzeige AWT, Swing, JavaFX & SWT 6
M JDialog statt JFrame AWT, Swing, JavaFX & SWT 22
I focus an ein jdialog geben AWT, Swing, JavaFX & SWT 3
3 JDialog über einem Vollbildfenster anzeigen AWT, Swing, JavaFX & SWT 5
M JDialog soll JFrame "blockieren" AWT, Swing, JavaFX & SWT 2
K JDialog zeigt Components nicht an AWT, Swing, JavaFX & SWT 3
S Jframe aus JDialog starten AWT, Swing, JavaFX & SWT 4
M JDialog übergibt eingaben nicht an aufrufende klasse AWT, Swing, JavaFX & SWT 15
S Assistent im JDialog AWT, Swing, JavaFX & SWT 7
H Swing JDialog cannot be resolved as a typ AWT, Swing, JavaFX & SWT 12
C Swing JDialog "flutet" den Arbeitsspeicher AWT, Swing, JavaFX & SWT 9
S Swing Eigenen JDialog mit Rückgabewert AWT, Swing, JavaFX & SWT 3
C Swing JDialog Ladebildschirm wird nicht angezeit AWT, Swing, JavaFX & SWT 5
Jagson Mit JMenu auf jDialog zurück? Wie? AWT, Swing, JavaFX & SWT 8
A JDialog (modal) blockiert alle Fenster! AWT, Swing, JavaFX & SWT 2
Jagson Swing Von JDialog zu anderem JDialog wechseln AWT, Swing, JavaFX & SWT 2
S JDialog direkt über dem MainFrame aufpoppen lassen AWT, Swing, JavaFX & SWT 2
A Swing JDialog KeyBindings und Textfelder AWT, Swing, JavaFX & SWT 5
D Daten von JDialog an JTable in JFrame übergeben AWT, Swing, JavaFX & SWT 7
D JDialog: immer nur einer gleichzeitig AWT, Swing, JavaFX & SWT 4
S JDialog per Button schließen AWT, Swing, JavaFX & SWT 2
B Swing JDialog modal, aber trotzdem Frame auswählbar AWT, Swing, JavaFX & SWT 2
D JDialog alwaysOnTop, aber nur innerhalb der Applikation AWT, Swing, JavaFX & SWT 3
J Swing JDialog blokiert mehrere JFrames - soll aber nur den aufrufenden blockieren AWT, Swing, JavaFX & SWT 4
S JDialog über Applet AWT, Swing, JavaFX & SWT 3
N Swing Klasse erbt von JDialog - Problem mit innerer ActionListener-Klasse AWT, Swing, JavaFX & SWT 6
J Swing JDialog gleichzeitig mit JFrame anzeigen AWT, Swing, JavaFX & SWT 8
S Probleme jDialog einfügen AWT, Swing, JavaFX & SWT 4
qwerqer Swing JDialog Darstellungsprobleme - Dialog lässt sich nicht schließen AWT, Swing, JavaFX & SWT 3
S Schrift ändern in JDialog AWT, Swing, JavaFX & SWT 3
S Problem mit JDialog AWT, Swing, JavaFX & SWT 3
D Elternfenster vom JDialog aktualisieren oder nicht ? AWT, Swing, JavaFX & SWT 7
hdi Swing Genaue Funktionsweise von modalem JDialog? AWT, Swing, JavaFX & SWT 11
U JDialog ohne Taskleiste AWT, Swing, JavaFX & SWT 7
S Programm pausieren während JDialog offen ist AWT, Swing, JavaFX & SWT 2
X JEditorPane Größe in JDialog automatisch anpassen AWT, Swing, JavaFX & SWT 2
Ollek JDialog Koponenten neu anordnen AWT, Swing, JavaFX & SWT 3
A JDialog AWT, Swing, JavaFX & SWT 10
Dit_ SwingUtilities.invokeLater und Modaler JDialog AWT, Swing, JavaFX & SWT 11
A Frage zu JDialog AWT, Swing, JavaFX & SWT 3
A JDialog ausdrucken AWT, Swing, JavaFX & SWT 7
aze JDialog mit runden ecken AWT, Swing, JavaFX & SWT 8
Dit_ JDialog nur horizontal vergrößern AWT, Swing, JavaFX & SWT 3
C Swing JProgressBar in JDialog wird nicht angezeigt AWT, Swing, JavaFX & SWT 6
M Swing Vererbung, Probleme mit JDialog AWT, Swing, JavaFX & SWT 12
H JDialog, Modal - Klassenübergreifend => Problem AWT, Swing, JavaFX & SWT 5
S Swing Bild (Gif) in Bitte warten JDialog AWT, Swing, JavaFX & SWT 6
U JFrame minimiert nach JDialog, JOptionPane AWT, Swing, JavaFX & SWT 3
K Swing JDialog aus Frame ausrufen AWT, Swing, JavaFX & SWT 2
B JDialog über JFileChooser anzeigen AWT, Swing, JavaFX & SWT 6
B JDialog AWT, Swing, JavaFX & SWT 6
J Swing Probmel mit JDialog (Modal/FocusLost/Button) AWT, Swing, JavaFX & SWT 5
E Swing Fehlerhaftes Verhalten bei gleichzeitigen Verwendnen von PopUpMenu und JDialog?! AWT, Swing, JavaFX & SWT 5
J Swing JDialog mit static-Funktion anzeigen -> Rückgabewert AWT, Swing, JavaFX & SWT 3
E Daten von JDialog nach JFrame übertragen AWT, Swing, JavaFX & SWT 4
F ActionListener von JButton funktioniert mit JFrame aber nicht mit JDialog AWT, Swing, JavaFX & SWT 2
D Mehrere Comboboxen in JDialog AWT, Swing, JavaFX & SWT 2
F JDialog per Button schliessen - klappt nicht AWT, Swing, JavaFX & SWT 4
BattleMaster246 JDialog erscheint in der Taskbar AWT, Swing, JavaFX & SWT 7
H Sub-Dialog von modalem JDialog aus aufrufen - geht das? AWT, Swing, JavaFX & SWT 6
R Swing JDialog liefert immer false, 2 JListen verknüpfen AWT, Swing, JavaFX & SWT 3
P Swing eigenen Modalen JDialog AWT, Swing, JavaFX & SWT 6
J JDialog verliert Werte AWT, Swing, JavaFX & SWT 3
N Variablen an JDialog übergeben AWT, Swing, JavaFX & SWT 2
P Swing JDialog schliesst nicht AWT, Swing, JavaFX & SWT 2
X Swing JDialog von JInternalFrames überlappen lassen AWT, Swing, JavaFX & SWT 2
O JDialog-JScrollPane-JTable Problem AWT, Swing, JavaFX & SWT 3
N Swing Frage zu modalem JDialog. AWT, Swing, JavaFX & SWT 16
A JFrame oder JDialog AWT, Swing, JavaFX & SWT 12
B Swing JDialog : Herausfinden wie dieser beendet wurde? AWT, Swing, JavaFX & SWT 2
T JDialog ohne Fenstermanager? AWT, Swing, JavaFX & SWT 2
S JDialog in der Taskbar anzeigen AWT, Swing, JavaFX & SWT 3
A Swing JFrame Werte aus JDialog übergeben AWT, Swing, JavaFX & SWT 4
K Swing JDialog ohne Titlebar mit Rahmen AWT, Swing, JavaFX & SWT 5
KrokoDiehl Swing KeyEvents für JDialog / JFrame AWT, Swing, JavaFX & SWT 2
C Swing JComboBox in JDialog AWT, Swing, JavaFX & SWT 3

Ähnliche Java Themen

Neue Themen


Oben