Hi, ich bekomm immer mal wieder eine StackOverflowException und weiß nicht wieso. Habs mit dem Debugger versucht und find den Fehler auch nicht.
Bin dankbar für jede Hilfe
Code:
/**
* Add mouse listener to popup menu.
*/
public void addPopupMenuMouseListener() {
if (true) {
//Add mouse listener to open popup menu
this.tree.addMouseListener(new MouseAdapter() {
public void mouseReleased(MouseEvent e) {
if (e.getButton() == e.BUTTON3) {
if (e.isPopupTrigger()) {
popupMenu.show(e.getComponent(), e.getX(), e.getY());
}
}
}
public void mousePressed(MouseEvent e) {
TreePath selectPath = tree.getPathForLocation(e.getX(), e.getY());
int selectRow = tree.getRowForLocation(e.getX(), e.getY());
if (changeDate != null || delete != null) {
popupMenu.removeAll();
try {
popupMenuInit();
}
catch (Exception ex) {
ex.printStackTrace();
}
}
if (e.getButton() == e.BUTTON1 && tree.getSelectionPath() == selectPath ||
e.getButton() == e.BUTTON3) {
setButtonsEnabled(false, false, true, true, true, false, false);
tree.setSelectionRow(selectRow);
if (selectRow != -1) {
Object[] path = selectPath.getPath();
String leafPath = String.valueOf(path[path.length - 1]);
try {
id = Integer.parseInt(leafPath.substring(leafPath.length() - 6, leafPath.length()));
}
catch (NumberFormatException nfe) {
//do nothing -> only catch exception
}
catch (StringIndexOutOfBoundsException sioobe) {
//do nothing -> only catch exception
}
//Reservation special popup menu item
if (leafPath.indexOf("ReID") != -1) {
delete = new JMenuItem("Reservierung löschen");
delete.setIcon(new ImageIcon(ProjectTreeGUI.class.getResource("images/delete.gif")));
//Add action listener to delete popup menu item
delete.addActionListener(new ActionAdapter() {
public void actionPerformed(ActionEvent e) {
int act = JOptionPane.showConfirmDialog(daps, "Wollen Sie die Reservierung löschen?",
"Reservierung löschen", JOptionPane.OK_CANCEL_OPTION);
if (act == JOptionPane.OK_OPTION) {
if (reservation.deleteReservation(id)) {
projectTreeGUI.setNewCalculatedTree();
}
}
}
});
changeDate = new JMenuItem("Datum der Reservierung ändern");
//Add action listener to changeDate popup menu item
changeDate.addActionListener(new ActionAdapter() {
public void actionPerformed(ActionEvent e) {
ChangeEntryDateGUI changeEntryDateGUI = new ChangeEntryDateGUI(daps, projectTreeGUI,
reservation, id);
int x = (daps.desktopPane.getWidth() / 2) - (changeEntryDateGUI.getWidth() / 2);
int y = (daps.desktopPane.getHeight() / 2) - (changeEntryDateGUI.getHeight() / 2);
daps.desktopPane.add(changeEntryDateGUI);
daps.desktopManager.dragFrame(changeEntryDateGUI, x, y);
daps.desktopManager.activateFrame(changeEntryDateGUI);
}
});
//Assemble popup menu
popupMenu.addSeparator();
popupMenu.add(delete);
popupMenu.addSeparator();
popupMenu.add(changeDate);
}
}
}
}
});
test = false;
}
}
Bin dankbar für jede Hilfe