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.
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
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
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