java-forum.org
Java 6 Einstieg und professioneller Einsatz
Alter Preis: 34,90 EUR
Jetzt: 0,00 EUR

zzgl. Versandkosten

Zurück   java-forum.org > Java - Programmierung > AWT, Swing & SWT

AWT, Swing & SWT Themen zur Programmierung von Benutzer-Oberflächen (GUI, Applet) sowie zur Grafikprogrammierung (2D / 3D)

Thema geschlossen    
Themen-Optionen Thema durchsuchen Ansicht
Alt 04.12.2006, 12:45   #1 (permalink)
Neuer Benutzer
short
 
Registriert seit: 20.11.2006
Beiträge: 22
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
Standard Mouselistener wird wiederholt aufgerufen

In meinen Proejct habe ich einen JTree denn ich momentan mit der "Hammer Methode" komplett ersetzte, das ist soweit auch nicht das problem.
Das Problem ist sobald ich neue elemente hinzufüge, und damit auch die Tree Ersetzen Methode aufrufe. und dann einmal doppelclicke in meinen Baum wird der Mouse Listener immer mehrfach aufgerufen, je nachdem wie viele objecte ich vorher hinzugefügt habe. es besteht also auf jedenfall ein zusammenhang, ich kann mir das aber nicht so recht erklären, es scheint mir fast so als ob jedesmal wenn ich den Baum ersetzte er nur darübergelegt wird und sobald ich drauf doppelt clicke führt er es für alle auf, aber ich kann mir nicht erklären wieso es überhaupt mehrere instanzen meines Trees geben sollte.
versteht ihr was ich meine? Es ist etwas schwierig zu beschreiben.
Auf jedenfall wird bei einem doppelclick alles im mouselistener n* aufgerufen, wobei n die anzahl meiner hinzugefügten Objekte+1 entspricht.
Any help would be much appreciated

Code:
private void TreeErsetzen(){
        
        //myTree = new OBDComponentManagerTree(rootNode);
        ComponentManagerModel = new DefaultTreeModel(rootNode);
        jTree3.setModel(ComponentManagerModel);
        jTree3.setRootVisible(false);
        jTree3.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
        
        jTree3.addTreeSelectionListener(new TreeSelectionListener() {
            public void valueChanged(TreeSelectionEvent e) {
                System.out.println(e.getPath().getPathComponent(e.getPath().getPathCount()-1).toString());
                setClickedWhat(e.getPath().getPathComponent(e.getPath().getPathCount()-1).toString());
                setSelectedObject(((DefaultMutableTreeNode)e.getPath().getLastPathComponent()).getUserObject());
                setSelectedDepth(e.getPath().getPathCount());
                setClickedWhat(e.getPath());
            }
        });
        jTree3.addMouseListener(new MouseListener() {
            public void mouseClicked(MouseEvent e) {
                if(e.getClickCount()==2){
                    boolean check=false;
                    System.out.println("click "+clickedWhat);
                    System.out.println("clicked Depth "+clickedDepth);
                    System.out.println("what am i:"+clickedWhatObject.toString());
                    if(clickedWhatS.equals("Detectors")||clickedWhatS.equals("Light Sources")||clickedWhatS.equals("Waveguides")){
                        check=true;
                    } else{
                        check=false;
                    }
                    if(!check){
                        if(clickedWhatS.substring(0,5).equals("Detec")){
                            startDetectorDialog(clickedWhatObject);
                        } else if(clickedWhat.equals("Layer (Lay)")){
                            //  myOBD.startLayerDialog();
                        } else if(clickedWhat.equals("Parent (PW)")){
                            //     myOBD.startWaveguideDialog(true);
                        } else if(clickedWhat.equals("Branch (BW)")){
                            //    myOBD.startWaveguideDialog(false);
                        } else if(clickedWhat.equals("Line (LS)")){
                            //     myOBD.startLineDialog();
                        } else if(clickedWhat.equals("Bend (BS)")){
                            //      myOBD.startBendDialog();
                        }
                    }
                }
                
                
            }
            public void mouseEntered(MouseEvent e) {
            }
            public void mouseExited(MouseEvent e) {
            }
            public void mousePressed(MouseEvent e) {
            }
            public void mouseReleased(MouseEvent e) {
            }
        });
        
        render = new OBDComponentManagerTreeRenderer();
        jTree3.setCellRenderer(render);
        
        //TODO
        for (int i = 0; i < jTree3.getRowCount(); i++) {
            jTree3.expandRow(i);
            //System.out.println("row "+i+" expanded");
        }
        //ComponentManagerModel.reload();
        //jTree3 = myTree;
    }
Fantatier ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Alt 04.12.2006, 12:48   #2 (permalink)
Premium-Benutzer
 
Benutzerbild von The_S
 
Registriert seit: 29.11.2004
Beiträge: 11.490
Blog-Einträge: 1
Abgegebene Danke: 32
Erhielt 123 Danke für 111 Beiträge
Naja, du addest bei jedem aufruf deinem jtree3 die Listener nochmal. Von daher werden die Methoden auch zweimal aufgerufen.
The_S ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Alt 04.12.2006, 12:50   #3 (permalink)
Stammbenutzer
Halbes Megabyte
 
Registriert seit: 17.08.2006
Beiträge: 587
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
Was mir als erstes auffällt:

Code:
myTree = new OBDComponentManagerTree(rootNode);
In allen weiteren Zeilen benutzt du jedoch jTree3, nicht myTree. Das könnte auch zu dem von dir beschriebenen Verhalten führen, weil du ja jedes mal einen zusätzlichen ActionListener hinzufügst.
hupfdule ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Alt 04.12.2006, 13:14   #4 (permalink)
Neuer Benutzer
short
Themenstarter
 
Registriert seit: 20.11.2006
Beiträge: 22
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
ok, danke ich dachte ich würde die auch quasi überschreiben und nicht weitere anhängen.
Fantatier ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Thema geschlossen    

Lesezeichen

Latex Maths & Physics Editor ...

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln
Es ist Ihnen erlaubt, neue Themen zu verfassen.
Es ist Ihnen erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are aus
Pingbacks are aus
Refbacks are aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
paintComponent wird nicht aufgerufen kulturfenster Java Basics - Anfänger-Themen 16 22.01.2009 23:52
Methode wird endlos wiederholt Dahakar Allgemeine Java-Themen 4 24.11.2008 20:48
servicesDiscovered() wird nicht aufgerufen IceTi Mobile Geräte 1 17.11.2008 21:35
Klasse wird 2 mal aufgerufen MScalli Allgemeine Java-Themen 5 11.03.2008 13:14
set-Methode wird nie aufgerufen schaefli Allgemeines EE 0 18.03.2007 23:26


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:31 Uhr.


Powered by vBulletin® Version 3.8.6 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.3.2
Thanks for Smilies by smilies.4-user.de