Cursor wird nicht geändert



  • Hallo,
    ich habe einen JTree auf dem man nach bestimmten Knoten suchen kann. Während der Suche soll der Cursor auf eine WAIT-Cursor gehen und nachher wieder auf den DEFAULT-Cursor.
    Leider ist es so, dass sobald man in dem InputDialog auf OK geklickt hat, das Hauptfenster während der gesamten Suche nicht mehr neu gezeichnet wird (statt dem InputDialog ist nur noch ein graues Rechteck zu sehen). Der Cursor wird ebenfalls nicht umgestellt.

    Gibt es eine Chance ohne einen zweiten Thread (für Suche) den Cursor umzuschalten?

    Danke.

    /**
     * Asks for a tree node and highlights the matching nodes.
     */
    private void searchTreeNode(){
    	String partID = JOptionPane.showInputDialog(_mainWindow, "Enter the searched ID");
    	if(partID != null){
    		_mainWindow.setCursor(new Cursor(Cursor.WAIT_CURSOR));
    
    		TreePath currentTreePath = _tree.getSelectionPath();
    
    		// Collapse the tree recursivly
    		expandOrCollapseTreeNodes(currentTreePath, false);
    
    		// Highlight all matching nodes
    		_tree.setSelectionPath(null);
    		searchTreeNode(currentTreePath, partID);
    
    		_mainWindow.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
    	}
    }
    


  • Wo ist denn der Thread für die Suche? Wie wird er gestartet?



  • Es gibt keinen Thread für die Suche. In der Methode "searchTreeNode" wird der Baum rekursiv durchsucht.



  • Unter MFC würde ich ja sagen, du solltest zwischendurch mal (in regelmäßigen Abständen) die normale Nachrichtenbehandlung drankommen lassen (ProcessMessages()) - wie der nötige Befehl bei Java lautet, mußt du leider selber herausfinden.


Anmelden zum Antworten