Java - JTree con directorio error al cerrar un nodo

   
Vista:

JTree con directorio error al cerrar un nodo

Publicado por gonzalo (112 intervenciones) el 01/09/2016 05:48:55
hola a todos.

hice un frame con un Jtree que me ayuda a consultar el arbol de directorios, esta trabajando bien pero el problema es cuando doy click en una terminal y luego cierro el nodo donde esta esa terminal marca errores, les muestro el codigo con el problema y el error:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
public static Component CreateJTDirectory()
{
	DefaultMutableTreeNode DMTPadre= new DefaultMutableTreeNode(ObjCbDrivers.GetCurrentDrive());
 
	GenerarMenu(ObjCbDrivers.GetCurrentDrive(),DMTPadre);
 
	Tree= new JTree(DMTPadre);
 
Tree.addTreeSelectionListener(new TreeSelectionListener()
{
	@Override
	public void valueChanged(TreeSelectionEvent e)
	{
		DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode)Tree.getLastSelectedPathComponent();
 
		if(selectedNode.isLeaf()) // <----------- aqui esta el error.
		{
			OidNode nd = (OidNode)selectedNode.getUserObject();
			FrameDirectoryFile.LabColonia.setText(nd.getId());
			GenerarMenu(nd.getId(),selectedNode);
			FillFileList(nd.getId());
		}
	}
});
 
JScrollPane scrollPane = new JScrollPane(Tree);
scrollPane.setBounds(5,30,255,460);
 
	return scrollPane;
}


Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at ObjJTDirectory$1.valueChanged(ObjJTDirectory.java:75)
at javax.swing.JTree.fireValueChanged(JTree.java:2927)
at javax.swing.JTree$TreeSelectionRedirector.valueChanged(JTree.java:3391)
at javax.swing.tree.DefaultTreeSelectionModel.fireValueChanged(DefaultTreeSelectionModel.java:635)
at javax.swing.tree.DefaultTreeSelectionModel.notifyPathChange(DefaultTreeSelectionModel.java:1093)
at javax.swing.tree.DefaultTreeSelectionModel.removeSelectionPaths(DefaultTreeSelectionModel.java:502)
at javax.swing.JTree.removeDescendantSelectedPaths(JTree.java:3723)
at javax.swing.JTree.setExpandedState(JTree.java:3606)
at javax.swing.JTree.collapsePath(JTree.java:2237)
at javax.swing.plaf.basic.BasicTreeUI.toggleExpandState(BasicTreeUI.java:2297)
at javax.swing.plaf.basic.BasicTreeUI.handleExpandControlClick(BasicTreeUI.java:2273)
at javax.swing.plaf.basic.BasicTreeUI.checkForClickInExpandControl(BasicTreeUI.java:2231)
at javax.swing.plaf.basic.BasicTreeUI$Handler.handleSelection(BasicTreeUI.java:3600)
at javax.swing.plaf.basic.BasicTreeUI$Handler.mousePressed(BasicTreeUI.java:3548)
at java.awt.Component.processMouseEvent(Component.java:6532)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
at java.awt.Component.processEvent(Component.java:6300)
at java.awt.Container.processEvent(Container.java:2236)
at java.awt.Component.dispatchEventImpl(Component.java:4891)
at java.awt.Container.dispatchEventImpl(Container.java:2294)
at java.awt.Component.dispatchEvent(Component.java:4713)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4522)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466)
at java.awt.Container.dispatchEventImpl(Container.java:2280)
at java.awt.Window.dispatchEventImpl(Window.java:2750)
at java.awt.Component.dispatchEvent(Component.java:4713)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
at java.awt.EventQueue$4.run(EventQueue.java:731)
at java.awt.EventQueue$4.run(EventQueue.java:729)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)



el evento detecta en la linea que dice if(selectedNode.isLeaf())

me parece que si tengo una terminal seleccionada y cierro la "rama" donde esta esa terminal el nodo dispara el error.

hay manera de detectar si el evento se genero en el icono que cierra la rama? de esa manera evitaria el error.

o si hay algun componente que este dedicado al arbol de directorios tal vez eso me ayudaria con este problema.

salu2.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

JTree con directorio error al cerrar un nodo

Publicado por gonzalo (112 intervenciones) el 02/09/2016 22:41:23
listo, un try catch y fue todo.

gracias

salu2
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar