<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-8932674331825602504</id><updated>2011-11-27T16:08:15.391-08:00</updated><category term='programación'/><category term='programar'/><category term='jexplorer'/><category term='java'/><category term='swing'/><title type='text'>JavaExplorer</title><subtitle type='html'>Proyecto Java para programar un explorador de archivos. Se utilizarán las librerías Swing de Java. Será un tutorial de Java y Swing.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://jexplorer.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8932674331825602504/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://jexplorer.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Iñigo</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://4.bp.blogspot.com/_0_Lj8wUYfQM/Sw41BH1HzGI/AAAAAAAAANY/YwBRtAZXtiU/S220/Coyote.bmp'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>7</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8932674331825602504.post-916546551416422343</id><published>2009-06-26T00:00:00.000-07:00</published><updated>2009-06-26T04:26:13.349-07:00</updated><title type='text'>Uniendo los componentes II</title><content type='html'>Ya tenemos unidos la lista de unidades y la lista de ficheros, pero también a la hora de pulsar doble click en una carpeta de la lista de ficheros tenemos que entrar en ella. Así que lo que vamos a hacer el lo mismo que con la barra de unidades. Crearemos un 'listener' y nos conectaremos a él.&lt;br /&gt;&lt;br /&gt;En este caso el 'listener' es de la misma lista de ficheros, por lo que conectaremos a a la lista con su propio listener. Podríamos hacerlo más fácil, al dar doble click cargar la lista, pero de esta forma queda todo centralizado, y además, el listener será necesario para el futuro.&lt;br /&gt;&lt;br /&gt;Así que este es el código ha añadir:&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;public class JListFiles extends JScrollPane implements JListRootsListener, JListFilesListener {&lt;br /&gt;...&lt;br /&gt;private Vector listeners = new Vector();&lt;br /&gt;..&lt;br /&gt;public JListFiles(File folder) throws IOException {&lt;br /&gt;...&lt;br /&gt; listFiles.addMouseListener(new MouseAdapter() {&lt;br /&gt;  public void mouseClicked(MouseEvent evt) {&lt;br /&gt;   if (evt.getClickCount() == 2) {&lt;br /&gt;    File selectedFile = (File)listFiles.getSelectedValue();&lt;br /&gt;    boolean isFolder =  selectedFile.isDirectory();&lt;br /&gt;    for(Enumeration e = listeners.elements(); e.hasMoreElements(); ) {&lt;br /&gt;     JListFilesListener listener = (JListFilesListener)e.nextElement();&lt;br /&gt;     if (isFolder) {&lt;br /&gt;      listener.jlistFoldersDblClicked(selectedFile);&lt;br /&gt;     } else {&lt;br /&gt;      listener.jlistFilesDblClicked(selectedFile);&lt;br /&gt;     }&lt;br /&gt;    }&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt; });&lt;br /&gt; addListener(this);&lt;br /&gt;}&lt;br /&gt;...&lt;br /&gt;/**&lt;br /&gt; * Evento que lanza la lista de ficheros al hacer doble click sobre un fichero&lt;br /&gt; *&lt;br /&gt; * @file Fichero sobre el que se ha hecho doble-click&lt;br /&gt; */&lt;br /&gt;public void jlistFilesDblClicked(File file) {&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt; * Evento que lanza la lista de ficheros al hacer doble click sobre una carpeta&lt;br /&gt; *&lt;br /&gt; * @folder Carpeta sobre el que se ha hecho doble-click&lt;br /&gt; */&lt;br /&gt;public void jlistFoldersDblClicked(File folder) {&lt;br /&gt; loadFiles(folder);&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Para el próximo post intentaremos publicar el código del proyecto. Y esperamos hacer los post más a menudo y no como este que ha tardado casi un año.&lt;br /&gt;&lt;br /&gt;Saludos&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8932674331825602504-916546551416422343?l=jexplorer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jexplorer.blogspot.com/feeds/916546551416422343/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8932674331825602504&amp;postID=916546551416422343' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8932674331825602504/posts/default/916546551416422343'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8932674331825602504/posts/default/916546551416422343'/><link rel='alternate' type='text/html' href='http://jexplorer.blogspot.com/2009/06/uniendo-los-componentes-ii.html' title='Uniendo los componentes II'/><author><name>Iñigo</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://4.bp.blogspot.com/_0_Lj8wUYfQM/Sw41BH1HzGI/AAAAAAAAANY/YwBRtAZXtiU/S220/Coyote.bmp'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8932674331825602504.post-3399335151369856457</id><published>2008-08-29T02:21:00.000-07:00</published><updated>2009-06-26T04:06:30.573-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='jexplorer'/><category scheme='http://www.blogger.com/atom/ns#' term='programar'/><category scheme='http://www.blogger.com/atom/ns#' term='swing'/><category scheme='http://www.blogger.com/atom/ns#' term='programación'/><title type='text'>Uniendo los componentes</title><content type='html'>Para poder unir los dos componentes que hemos hecho, la lista de unidades y la lista de ficheros, vamos a crear un &lt;i&gt;listener&lt;/i&gt;, es decir un clase que esté escuchando o esperando eventos.&lt;br /&gt;&lt;br /&gt;En primer lugar crearemos un &lt;i&gt;interface&lt;/i&gt; que deberán implementar todos los componentes (todas las clases) que quieran 'escuchar' (poder recibir) esos eventos:&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;package org.jexplorer;&lt;br /&gt;&lt;br /&gt;import java.io.*;&lt;br /&gt;public interface JListRootsListener {&lt;br /&gt;&lt;br /&gt;    public void JListRootsClicked(File file);&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Si leemos el código se puede ver que al hacer &lt;i&gt;click&lt;/i&gt; en la lista de unidades saltará este método con la unidad (file) sobre la que se ha pulsado.&lt;br /&gt;&lt;br /&gt;En segundo lugar añadiremos esta variable a la clase JListRoots.java:&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;private Vector listeners = new Vector();&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Será la lista de 'escuchadores' que quieren escuchar los eventos de la clase.&lt;br /&gt;&lt;br /&gt;En tercer lugar, añadiremos las siguientes líneas al final del constructor de la clase:&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;listRoots.addMouseListener(new MouseAdapter() {&lt;br /&gt; public void mouseClicked(MouseEvent evt) {&lt;br /&gt; String path = (String)listRoots.getSelectedValue();&lt;br /&gt;  File selectedFile = new File(path);&lt;br /&gt;  for(Enumeration e = listeners.elements(); e.hasMoreElements(); ) {&lt;br /&gt;   JListRootsListener listener = (JListRootsListener)e.nextElement();&lt;br /&gt;   listener.JListRootsClicked(selectedFile);&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;});&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Cuando se pulse en una unidad se lanzará la función &lt;i&gt;JListRootsClicked&lt;/i&gt; de todas las clases que se hayan añadido como listeners.&lt;br /&gt;&lt;br /&gt;En cuarto lugar, ¿Cómo hace una clase para poder ser un listener de JListRoots?&lt;br /&gt;Añadimos el siguiente código en la clase JListRoots:&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;public void addListener(JListRootsListener listener) {&lt;br /&gt; listeners.add(listener);&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Al final del constructor de la clase &lt;i&gt;JExplorer&lt;/i&gt; añadimos esto:&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;listRoots.addListener(listFiles);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;(Si, por fin estamos uniendo los dos controles)&lt;br /&gt;&lt;br /&gt;Y ahora para que funcione la clase &lt;i&gt;JListFiles&lt;/i&gt; debe implementar el interface &lt;i&gt;JListRootsListener&lt;/i&gt;:&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;public class JListFiles extends JScrollPane implements JListRootsListener {&lt;br /&gt;...&lt;br /&gt;public void JListRootsClicked(File file) {&lt;br /&gt; loadFiles(file);&lt;br /&gt;}&lt;br /&gt;....&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Y ya está, tenemos los dos controles unidos, si se pincha en una unidad de la lista deben aparecer los ficheros en la lista de la derecha.&lt;br /&gt;&lt;br /&gt;Para la próxima entrega navegaremos por la lista de ficheros.&lt;br /&gt;&lt;br /&gt;Saludos&lt;br /&gt;&lt;br /&gt;Enlaces patrocinados&gt;&lt;br /&gt;&lt;a href="http://www.instalacionescomerciales.net" target="_blank" &gt;camaras frigorificas congelacion&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8932674331825602504-3399335151369856457?l=jexplorer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jexplorer.blogspot.com/feeds/3399335151369856457/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8932674331825602504&amp;postID=3399335151369856457' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8932674331825602504/posts/default/3399335151369856457'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8932674331825602504/posts/default/3399335151369856457'/><link rel='alternate' type='text/html' href='http://jexplorer.blogspot.com/2008/08/uniendo-los-componentes.html' title='Uniendo los componentes'/><author><name>Iñigo</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://4.bp.blogspot.com/_0_Lj8wUYfQM/Sw41BH1HzGI/AAAAAAAAANY/YwBRtAZXtiU/S220/Coyote.bmp'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8932674331825602504.post-7869694254817643913</id><published>2008-08-12T01:35:00.000-07:00</published><updated>2009-06-26T04:06:30.573-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='jexplorer'/><category scheme='http://www.blogger.com/atom/ns#' term='programar'/><category scheme='http://www.blogger.com/atom/ns#' term='swing'/><category scheme='http://www.blogger.com/atom/ns#' term='programación'/><title type='text'>Ordenando la lista</title><content type='html'>Vamos a ordenar la lista. Para ello crearemos una clase que implemente el &lt;i&gt;interface&lt;/i&gt; &lt;a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Comparator.html" target="_blank"&gt;Comparator&lt;/a&gt;. El código es el siguiente:&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;package org.jexplorer;&lt;br /&gt;&lt;br /&gt;import java.io.*;&lt;br /&gt;import java.util.*;&lt;br /&gt;&lt;br /&gt;public class FileComparator implements Comparator {&lt;br /&gt;    public FileComparator() {&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public int compare(Object o1, Object o2) {&lt;br /&gt;        File f1 = (File)o1;&lt;br /&gt;        File f2 = (File)o2;&lt;br /&gt;        if (f1.isDirectory()) {&lt;br /&gt;            if (f2.isDirectory()) {&lt;br /&gt;                return f1.getName().compareTo(f2.getName());&lt;br /&gt;            } else {&lt;br /&gt;                return -1;&lt;br /&gt;            }&lt;br /&gt;        } else if (f2.isDirectory()) {&lt;br /&gt;            return 1;&lt;br /&gt;        } else {&lt;br /&gt;            return f1.getName().compareTo(f2.getName());&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public boolean equals(Object o) {&lt;br /&gt;        return false;&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Si se observa el código se ve que van primero las carpetas y a continuación los archivos y cada uno de los dos grupos ordenados por nombre.&lt;br /&gt;&lt;br /&gt;Lo único que nos queda es hacer la llamada desde la lista de ficheros (JListFiles):&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;public void loadFiles(File file) {&lt;br /&gt; File[] files = file.listFiles();&lt;br /&gt; Vector lista = new Vector(files.length);&lt;br /&gt; for (int i = 0; i &lt; files.length; i++) {&lt;br /&gt;  lista.add(files[i]);&lt;br /&gt; }&lt;br /&gt; Collections.sort(lista, new FileComparator());&lt;br /&gt; listFiles.setListData(lista);&lt;br /&gt; listFiles.setCellRenderer(new MyCellRenderer());&lt;br /&gt; setViewportView(listFiles);&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Se puede observar que la ordenación no es muy rápida. Se nota especialmente en unidades de red con muchos ficheros. Esto es por que estamos continuamente llamando a funciones de la clase &lt;a href="http://java.sun.com/j2se/1.5.0/docs/api/java/io/File.html" target="_blank"&gt;File&lt;/a&gt;, que no son muy óptimas. Estas llamadas ocurren en el CellRender y ahora en la ordenación. Ya lo mejoraremos.&lt;br /&gt;&lt;br /&gt;Nos falta que al dar doble click en una carpeta, de la lista de archivos, se muestre esa carpeta, y añadir más opciones de navegación. Lo dejaremos para los próximos posts.&lt;br /&gt;&lt;br /&gt;Saludos&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8932674331825602504-7869694254817643913?l=jexplorer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jexplorer.blogspot.com/feeds/7869694254817643913/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8932674331825602504&amp;postID=7869694254817643913' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8932674331825602504/posts/default/7869694254817643913'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8932674331825602504/posts/default/7869694254817643913'/><link rel='alternate' type='text/html' href='http://jexplorer.blogspot.com/2008/08/ordenando-la-lista.html' title='Ordenando la lista'/><author><name>Iñigo</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://4.bp.blogspot.com/_0_Lj8wUYfQM/Sw41BH1HzGI/AAAAAAAAANY/YwBRtAZXtiU/S220/Coyote.bmp'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8932674331825602504.post-8204043486439179041</id><published>2008-08-12T01:32:00.001-07:00</published><updated>2009-06-26T04:06:30.573-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='jexplorer'/><category scheme='http://www.blogger.com/atom/ns#' term='programar'/><category scheme='http://www.blogger.com/atom/ns#' term='swing'/><category scheme='http://www.blogger.com/atom/ns#' term='programación'/><title type='text'>Un pequeño explorador</title><content type='html'>En esta entrada vamos a unir los dos controles que hemos hecho, la lista de unidades y la lista de ficheros.&lt;br /&gt;&lt;br /&gt;Estas uniones se hacen mediante 'listeners', que los podríamos traducir como oyentes o escuchadores. Estos oyentes se 'instalan' en el control en cuestión y sus métodos son lanzados al realizar el usuario alguna acción sobre el control (hacer click, cambiar la selección, etc.)&lt;br /&gt;&lt;br /&gt;En nuestro caso hemos creado el siguiente listener:&lt;br /&gt;&lt;br /&gt;&lt;style&gt;.pclave {color: blue;} .string {color: #FF3300;}&lt;/style&gt;&lt;div style='border: solid 1px rgb(90, 90, 90);background: rgb(190, 190, 190)'&gt;&lt;div style='padding: 1em'&gt;&lt;span class='pclave'&gt;class&amp;nbsp;&lt;/span&gt;ListRootsListener&amp;nbsp;&lt;span class='pclave'&gt;implements&lt;/span&gt;&amp;nbsp;JListRootsListener&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class='pclave'&gt;public&amp;nbsp;&lt;/span&gt;&lt;span class='pclave'&gt;void&amp;nbsp;&lt;/span&gt;JListRootsClicked(File&amp;nbsp;file)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;listFiles.loadFiles(file);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;El cual hemos creado como una clase interna (inner class) de la clase JExplorer.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;JListRoots&lt;/b&gt; ahora posee una lista de 'oyentes' donde propagar cada evento generado por el usuario. En este momento únicamente el click del ratón sobre una unidad. A su vez implementa el listener del control JLIst para capturar el evento del click. El código quedará así:&lt;br /&gt;&lt;div style='border: solid 1px rgb(90, 90, 90);background: rgb(190, 190, 190)'&gt;&lt;div style='padding: 1em'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;...&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class='pclave'&gt;private&amp;nbsp;&lt;/span&gt;JList&amp;nbsp;listRoots&amp;nbsp;=&amp;nbsp;&lt;span class='pclave'&gt;new&lt;/span&gt;&amp;nbsp;JList();&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class='pclave'&gt;private&amp;nbsp;&lt;/span&gt;Vector&amp;nbsp;listeners&amp;nbsp;=&amp;nbsp;&lt;span class='pclave'&gt;new&lt;/span&gt;&amp;nbsp;Vector();&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class='pclave'&gt;public&amp;nbsp;&lt;/span&gt;JListRoots()&amp;nbsp;&lt;span class='pclave'&gt;throws&lt;/span&gt;&amp;nbsp;IOException&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;File[]&amp;nbsp;roots&amp;nbsp;=&amp;nbsp;File.listRoots();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Vector&amp;nbsp;lista&amp;nbsp;=&amp;nbsp;&lt;span class='pclave'&gt;new&lt;/span&gt;&amp;nbsp;Vector(roots.length);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class='pclave'&gt;for&lt;/span&gt;&amp;nbsp;(&lt;span class='pclave'&gt;int&amp;nbsp;&lt;/span&gt;i&amp;nbsp;=&amp;nbsp;0;&amp;nbsp;i&amp;nbsp;&amp;lt;&amp;nbsp;roots.length;&amp;nbsp;i++)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;lista.add(roots[i].getAbsolutePath());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;listRoots.setListData(lista);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;listRoots.setCellRenderer(&lt;span class='pclave'&gt;new&lt;/span&gt;&amp;nbsp;MyCellRenderer());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;setViewportView(listRoots);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;listRoots.addMouseListener(&lt;span class='pclave'&gt;new&lt;/span&gt;&amp;nbsp;MouseAdapter()&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class='pclave'&gt;public&amp;nbsp;&lt;/span&gt;&lt;span class='pclave'&gt;void&amp;nbsp;&lt;/span&gt;mouseClicked(MouseEvent&amp;nbsp;evt)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class='pclave'&gt;String&amp;nbsp;&lt;/span&gt;path&amp;nbsp;=&amp;nbsp;(String)listRoots.getSelectedValue();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;File&amp;nbsp;selectedFile&amp;nbsp;=&amp;nbsp;&lt;span class='pclave'&gt;new&lt;/span&gt;&amp;nbsp;File(path);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class='pclave'&gt;for&lt;/span&gt;(Enumeration&amp;nbsp;e&amp;nbsp;=&amp;nbsp;listeners.elements();&amp;nbsp;e.hasMoreElements();&amp;nbsp;)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;JListRootsListener&amp;nbsp;listener&amp;nbsp;=&amp;nbsp;(JListRootsListener)e.nextElement();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;listener.JListRootsClicked(selectedFile);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;});&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class='pclave'&gt;public&amp;nbsp;&lt;/span&gt;&lt;span class='pclave'&gt;void&amp;nbsp;&lt;/span&gt;addListener(JListRootsListener&amp;nbsp;listener)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;listeners.add(listener);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class='pclave'&gt;class&amp;nbsp;&lt;/span&gt;MyCellRenderer&amp;nbsp;&lt;span class='pclave'&gt;extends&lt;/span&gt;&amp;nbsp;JLabel&amp;nbsp;&lt;span class='pclave'&gt;implements&lt;/span&gt;&amp;nbsp;ListCellRenderer&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;...&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;En &lt;b&gt;JExplorer&lt;/b&gt; justo antes de &lt;i&gt;setDefaultCloseOperation&lt;/i&gt; se debe poner esta línea:&lt;br /&gt;&lt;div style='border: solid 1px rgb(90, 90, 90);background: rgb(190, 190, 190)'&gt;&lt;div style='padding: 1em'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;listRoots.addListener(&lt;span class='pclave'&gt;new&lt;/span&gt;&amp;nbsp;ListRootsListener());&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Y ya está, ya tenemos unidos los dos controles. En la próxima entrega ordenaremos la lista de ficheros.&lt;br /&gt;&lt;br /&gt;Saludos&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8932674331825602504-8204043486439179041?l=jexplorer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jexplorer.blogspot.com/feeds/8204043486439179041/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8932674331825602504&amp;postID=8204043486439179041' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8932674331825602504/posts/default/8204043486439179041'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8932674331825602504/posts/default/8204043486439179041'/><link rel='alternate' type='text/html' href='http://jexplorer.blogspot.com/2008/08/un-pequeo-explorador.html' title='Un pequeño explorador'/><author><name>Iñigo</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://4.bp.blogspot.com/_0_Lj8wUYfQM/Sw41BH1HzGI/AAAAAAAAANY/YwBRtAZXtiU/S220/Coyote.bmp'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8932674331825602504.post-8293941774316608984</id><published>2008-08-11T01:05:00.001-07:00</published><updated>2009-06-26T04:06:30.574-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='jexplorer'/><category scheme='http://www.blogger.com/atom/ns#' term='programar'/><category scheme='http://www.blogger.com/atom/ns#' term='swing'/><category scheme='http://www.blogger.com/atom/ns#' term='programación'/><title type='text'>La lista de unidades</title><content type='html'>Ahora vamos a crear una lista de unidades. Como siempre iremos de poco en poco. Aquí os dejo el código de la clase JListRoots:&lt;br /&gt;&lt;style&gt;.pclave {color: blue;} .string {color: #FF3300;}&lt;/style&gt;&lt;div style='border: solid 1px rgb(90, 90, 90);background: rgb(190, 190, 190)'&gt;&lt;div style='padding: 1em'&gt;&lt;span class='pclave'&gt;package&lt;/span&gt;&amp;nbsp;org.jexplorer;&lt;br /&gt;&lt;br /&gt;&lt;span class='pclave'&gt;import&lt;/span&gt;&amp;nbsp;java.awt.*;&lt;br /&gt;&lt;span class='pclave'&gt;import&lt;/span&gt;&amp;nbsp;javax.swing.*;&lt;br /&gt;&lt;span class='pclave'&gt;import&lt;/span&gt;&amp;nbsp;java.io.*;&lt;br /&gt;&lt;span class='pclave'&gt;import&lt;/span&gt;&amp;nbsp;java.util.Vector;&lt;br /&gt;&lt;br /&gt;&lt;span class='pclave'&gt;public&amp;nbsp;&lt;/span&gt;&lt;span class='pclave'&gt;class&amp;nbsp;&lt;/span&gt;JListRoots&amp;nbsp;&lt;span class='pclave'&gt;extends&lt;/span&gt;&amp;nbsp;JScrollPane&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class='pclave'&gt;final&lt;/span&gt;&amp;nbsp;&lt;span class='pclave'&gt;static&lt;/span&gt;&amp;nbsp;&lt;span class='pclave'&gt;String&amp;nbsp;&lt;/span&gt;PATH_DEVICE_NFS&amp;nbsp;=&amp;nbsp;JExplorer.PATH_THEMES&amp;nbsp;+&amp;nbsp;JExplorer.PATH_THEME&amp;nbsp;+&amp;nbsp&lt;span class='string'&gt;"32x32/devices/nfs_unmount.png"&lt;/span&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class='pclave'&gt;final&lt;/span&gt;&amp;nbsp;&lt;span class='pclave'&gt;static&lt;/span&gt;&amp;nbsp;&lt;span class='pclave'&gt;String&amp;nbsp;&lt;/span&gt;PATH_DEVICE_HD&amp;nbsp;=&amp;nbsp;JExplorer.PATH_THEMES&amp;nbsp;+&amp;nbsp;JExplorer.PATH_THEME&amp;nbsp;+&amp;nbsp&lt;span class='string'&gt;"32x32/devices/hdd_unmount.png"&lt;/span&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class='pclave'&gt;final&lt;/span&gt;&amp;nbsp;&lt;span class='pclave'&gt;static&lt;/span&gt;&amp;nbsp;&lt;span class='pclave'&gt;String&amp;nbsp;&lt;/span&gt;PATH_DEVICE_FD&amp;nbsp;=&amp;nbsp;JExplorer.PATH_THEMES&amp;nbsp;+&amp;nbsp;JExplorer.PATH_THEME&amp;nbsp;+&amp;nbsp&lt;span class='string'&gt;"32x32/devices/3floppy_unmount.png"&lt;/span&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class='pclave'&gt;final&lt;/span&gt;&amp;nbsp;&lt;span class='pclave'&gt;static&lt;/span&gt;&amp;nbsp;&lt;span class='pclave'&gt;String&amp;nbsp;&lt;/span&gt;PATH_DEVICE_DVD&amp;nbsp;=&amp;nbsp;JExplorer.PATH_THEMES&amp;nbsp;+&amp;nbsp;JExplorer.PATH_THEME&amp;nbsp;+&amp;nbsp&lt;span class='string'&gt;"32x32/devices/dvd_unmount.png"&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class='pclave'&gt;final&lt;/span&gt;&amp;nbsp;&lt;span class='pclave'&gt;static&lt;/span&gt;&amp;nbsp;ImageIcon&amp;nbsp;nfsIcon&amp;nbsp;=&amp;nbsp;&lt;span class='pclave'&gt;new&lt;/span&gt;&amp;nbsp;ImageIcon(PATH_DEVICE_NFS);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class='pclave'&gt;final&lt;/span&gt;&amp;nbsp;&lt;span class='pclave'&gt;static&lt;/span&gt;&amp;nbsp;ImageIcon&amp;nbsp;hdIcon&amp;nbsp;=&amp;nbsp;&lt;span class='pclave'&gt;new&lt;/span&gt;&amp;nbsp;ImageIcon(PATH_DEVICE_HD);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class='pclave'&gt;final&lt;/span&gt;&amp;nbsp;&lt;span class='pclave'&gt;static&lt;/span&gt;&amp;nbsp;ImageIcon&amp;nbsp;fdIcon&amp;nbsp;=&amp;nbsp;&lt;span class='pclave'&gt;new&lt;/span&gt;&amp;nbsp;ImageIcon(PATH_DEVICE_FD);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class='pclave'&gt;final&lt;/span&gt;&amp;nbsp;&lt;span class='pclave'&gt;static&lt;/span&gt;&amp;nbsp;ImageIcon&amp;nbsp;dvdIcon&amp;nbsp;=&amp;nbsp;&lt;span class='pclave'&gt;new&lt;/span&gt;&amp;nbsp;ImageIcon(PATH_DEVICE_DVD);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class='pclave'&gt;private&amp;nbsp;&lt;/span&gt;JList&amp;nbsp;listRoots&amp;nbsp;=&amp;nbsp;&lt;span class='pclave'&gt;new&lt;/span&gt;&amp;nbsp;JList();&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class='pclave'&gt;public&amp;nbsp;&lt;/span&gt;JListRoots()&amp;nbsp;&lt;span class='pclave'&gt;throws&lt;/span&gt;&amp;nbsp;IOException&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;File[]&amp;nbsp;roots&amp;nbsp;=&amp;nbsp;File.listRoots();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Vector&amp;nbsp;lista&amp;nbsp;=&amp;nbsp;&lt;span class='pclave'&gt;new&lt;/span&gt;&amp;nbsp;Vector(roots.length);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class='pclave'&gt;for&lt;/span&gt;&amp;nbsp;(&lt;span class='pclave'&gt;int&amp;nbsp;&lt;/span&gt;i&amp;nbsp;=&amp;nbsp;0;&amp;nbsp;i&amp;nbsp;&amp;lt;&amp;nbsp;roots.length;&amp;nbsp;i++)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;lista.add(roots[i].getAbsolutePath());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;listRoots.setListData(lista);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;listRoots.setCellRenderer(&lt;span class='pclave'&gt;new&lt;/span&gt;&amp;nbsp;MyCellRenderer());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;setViewportView(listRoots);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class='pclave'&gt;class&amp;nbsp;&lt;/span&gt;MyCellRenderer&amp;nbsp;&lt;span class='pclave'&gt;extends&lt;/span&gt;&amp;nbsp;JLabel&amp;nbsp;&lt;span class='pclave'&gt;implements&lt;/span&gt;&amp;nbsp;ListCellRenderer&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class='pclave'&gt;public&amp;nbsp;&lt;/span&gt;Component&amp;nbsp;getListCellRendererComponent(JList&amp;nbsp;list,&amp;nbsp;&lt;span class='pclave'&gt;Object&lt;/span&gt;&amp;nbsp;value,&amp;nbsp;&lt;span class='pclave'&gt;int&amp;nbsp;&lt;/span&gt;index,&amp;nbsp;&lt;span class='pclave'&gt;boolean&lt;/span&gt;&amp;nbsp;isSelected,&amp;nbsp;&lt;span class='pclave'&gt;boolean&lt;/span&gt;&amp;nbsp;cellHasFocus)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class='pclave'&gt;String&amp;nbsp;&lt;/span&gt;device&amp;nbsp;=&amp;nbsp&lt;span class='string'&gt;""&lt;/span&gt;&amp;nbsp;+&amp;nbsp;value.toString();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;setText(device);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class='pclave'&gt;if&amp;nbsp;&lt;/span&gt;(device.equals&lt;span class='string'&gt;"C:\\"&lt;/span&gt;))&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;setIcon(hdIcon);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&lt;span class='pclave'&gt;else&lt;/span&gt;&amp;nbsp;&lt;span class='pclave'&gt;if&amp;nbsp;&lt;/span&gt;(device.equals&lt;span class='string'&gt;"A:\\"&lt;/span&gt;))&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;setIcon(fdIcon);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&lt;span class='pclave'&gt;else&lt;/span&gt;&amp;nbsp;&lt;span class='pclave'&gt;if&amp;nbsp;&lt;/span&gt;(device.equals&lt;span class='string'&gt;"D:\\"&lt;/span&gt;))&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;setIcon(dvdIcon);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&lt;span class='pclave'&gt;else&lt;/span&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;setIcon(nfsIcon);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class='pclave'&gt;if&amp;nbsp;&lt;/span&gt;(isSelected)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;setBackground(list.getSelectionBackground());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;setForeground(list.getSelectionForeground());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&lt;span class='pclave'&gt;else&lt;/span&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;setBackground(list.getBackground());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;setForeground(list.getForeground());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;setEnabled(list.isEnabled());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;setFont(list.getFont());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;setOpaque(true);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class='pclave'&gt;return&amp;nbsp;&lt;/span&gt;this;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;También vamos a modificar el código de JExplorer para que muestre los dos controles juntos. Queda unirlos, para que cuando pulsemos en la unidad C:\ nos muestre los ficheros de esa unidad. Esto lo haremos con &lt;i&gt;Listeners&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;Visualmente los uniremos con un JSplitPane:&lt;br /&gt;&lt;br /&gt;&lt;div style='border: solid 1px rgb(90, 90, 90);background: rgb(190, 190, 190)'&gt;&lt;div style='padding: 1em'&gt;&lt;span class='pclave'&gt;package&lt;/span&gt;&amp;nbsp;org.jexplorer;&lt;br /&gt;&lt;br /&gt;&lt;span class='pclave'&gt;import&lt;/span&gt;&amp;nbsp;java.awt.*;&lt;br /&gt;&lt;span class='pclave'&gt;import&lt;/span&gt;&amp;nbsp;javax.swing.*;&lt;br /&gt;&lt;span class='pclave'&gt;import&lt;/span&gt;&amp;nbsp;java.io.IOException;&lt;br /&gt;&lt;br /&gt;&lt;span class='pclave'&gt;public&amp;nbsp;&lt;/span&gt;&lt;span class='pclave'&gt;class&amp;nbsp;&lt;/span&gt;JExplorer&amp;nbsp;&lt;span class='pclave'&gt;extends&lt;/span&gt;&amp;nbsp;JFrame&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class='pclave'&gt;final&lt;/span&gt;&amp;nbsp;&lt;span class='pclave'&gt;static&lt;/span&gt;&amp;nbsp;&lt;span class='pclave'&gt;String&amp;nbsp;&lt;/span&gt;PATH_THEMES&amp;nbsp;=&amp;nbsp&lt;span class='string'&gt;"C:/java/jexplorer/themes/"&lt;/span&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class='pclave'&gt;final&lt;/span&gt;&amp;nbsp;&lt;span class='pclave'&gt;static&lt;/span&gt;&amp;nbsp;&lt;span class='pclave'&gt;String&amp;nbsp;&lt;/span&gt;PATH_THEME&amp;nbsp;=&amp;nbsp&lt;span class='string'&gt;"nuvola/"&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class='pclave'&gt;private&amp;nbsp;&lt;/span&gt;JListRoots&amp;nbsp;listRoots&amp;nbsp;=&amp;nbsp;null;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class='pclave'&gt;private&amp;nbsp;&lt;/span&gt;JListFiles&amp;nbsp;listFiles&amp;nbsp;=&amp;nbsp;null;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class='pclave'&gt;public&amp;nbsp;&lt;/span&gt;JExplorer()&amp;nbsp;&lt;span class='pclave'&gt;throws&lt;/span&gt;&amp;nbsp;IOException&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;listRoots&amp;nbsp;=&amp;nbsp;&lt;span class='pclave'&gt;new&lt;/span&gt;&amp;nbsp;JListRoots();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;listFiles&amp;nbsp;=&amp;nbsp;&lt;span class='pclave'&gt;new&lt;/span&gt;&amp;nbsp;JListFiles&lt;span class='string'&gt;"C:/"&lt;/span&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;JSplitPane&amp;nbsp;hpane&amp;nbsp;=&amp;nbsp;&lt;span class='pclave'&gt;new&lt;/span&gt;&amp;nbsp;JSplitPane(JSplitPane.HORIZONTAL_SPLIT,&amp;nbsp;listRoots,&amp;nbsp;listFiles);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;getContentPane().add(hpane,&amp;nbsp;BorderLayout.CENTER);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class='pclave'&gt;int&amp;nbsp;&lt;/span&gt;width&amp;nbsp;=&amp;nbsp;600;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class='pclave'&gt;int&amp;nbsp;&lt;/span&gt;height&amp;nbsp;=&amp;nbsp;300;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;setSize(width,&amp;nbsp;height);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;setVisible(true);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class='pclave'&gt;public&amp;nbsp;&lt;/span&gt;&lt;span class='pclave'&gt;static&lt;/span&gt;&amp;nbsp;&lt;span class='pclave'&gt;void&amp;nbsp;&lt;/span&gt;&lt;span class='pclave'&gt;main&lt;/span&gt;(String[]&amp;nbsp;args)&amp;nbsp;&lt;span class='pclave'&gt;throws&lt;/span&gt;&amp;nbsp;IOException&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class='pclave'&gt;new&lt;/span&gt;&amp;nbsp;JExplorer();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Así es como está quedando el proyecto:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_0_Lj8wUYfQM/SJ_1dm5FblI/AAAAAAAAAGA/P0W43hshdmQ/s1600-h/a.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_0_Lj8wUYfQM/SJ_1dm5FblI/AAAAAAAAAGA/P0W43hshdmQ/s320/a.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5233171181032795730" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Saludos&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8932674331825602504-8293941774316608984?l=jexplorer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jexplorer.blogspot.com/feeds/8293941774316608984/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8932674331825602504&amp;postID=8293941774316608984' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8932674331825602504/posts/default/8293941774316608984'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8932674331825602504/posts/default/8293941774316608984'/><link rel='alternate' type='text/html' href='http://jexplorer.blogspot.com/2008/08/la-lista-de-unidades.html' title='La lista de unidades'/><author><name>Iñigo</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://4.bp.blogspot.com/_0_Lj8wUYfQM/Sw41BH1HzGI/AAAAAAAAANY/YwBRtAZXtiU/S220/Coyote.bmp'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_0_Lj8wUYfQM/SJ_1dm5FblI/AAAAAAAAAGA/P0W43hshdmQ/s72-c/a.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8932674331825602504.post-5509390359841736998</id><published>2008-07-11T00:41:00.001-07:00</published><updated>2009-06-26T04:06:30.574-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='jexplorer'/><category scheme='http://www.blogger.com/atom/ns#' term='programar'/><category scheme='http://www.blogger.com/atom/ns#' term='swing'/><category scheme='http://www.blogger.com/atom/ns#' term='programación'/><title type='text'>La lista de ficheros</title><content type='html'>Ahora que ya tenemos la ventana creada vamos a poner en nuestro explorador de ficheros un control que muestre los ficheros de nuestro disco duro.&lt;br /&gt;&lt;br /&gt;Vamos a ir por pasos. Primero crearemos un control que nos muestra las carpetas y los ficheros. Esta clase extenderá la clase JList, y el código será el siguiente:&lt;br /&gt;&lt;br /&gt;&lt;style&gt;.pclave {color: blue;} .string {color: #FF3300;}&lt;/style&gt;&lt;div style='border: solid 1px rgb(90, 90, 90);background: rgb(190, 190, 190)'&gt;&lt;div style='padding: 1em'&gt;&lt;span class='pclave'&gt;package&lt;/span&gt;&amp;nbsp;org.jexplorer;&lt;br /&gt;&lt;br /&gt;&lt;span class='pclave'&gt;import&lt;/span&gt;&amp;nbsp;java.awt.*;&lt;br /&gt;&lt;span class='pclave'&gt;import&lt;/span&gt;&amp;nbsp;javax.swing.*;&lt;br /&gt;&lt;span class='pclave'&gt;import&lt;/span&gt;&amp;nbsp;java.io.*;&lt;br /&gt;&lt;span class='pclave'&gt;import&lt;/span&gt;&amp;nbsp;java.util.Vector;&lt;br /&gt;&lt;br /&gt;&lt;span class='pclave'&gt;public&amp;nbsp;&lt;/span&gt;&lt;span class='pclave'&gt;class&amp;nbsp;&lt;/span&gt;JListFiles&amp;nbsp;&lt;span class='pclave'&gt;extends&lt;/span&gt;&amp;nbsp;JScrollPane&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class='pclave'&gt;final&lt;/span&gt;&amp;nbsp;&lt;span class='pclave'&gt;static&lt;/span&gt;&amp;nbsp;&lt;span class='pclave'&gt;int&amp;nbsp;&lt;/span&gt;CELL_WIDTH&amp;nbsp;=&amp;nbsp;150;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class='pclave'&gt;final&lt;/span&gt;&amp;nbsp;&lt;span class='pclave'&gt;static&lt;/span&gt;&amp;nbsp;&lt;span class='pclave'&gt;int&amp;nbsp;&lt;/span&gt;CELL_HEIGTH&amp;nbsp;=&amp;nbsp;50;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class='pclave'&gt;final&lt;/span&gt;&amp;nbsp;&lt;span class='pclave'&gt;static&lt;/span&gt;&amp;nbsp;&lt;span class='pclave'&gt;String&amp;nbsp;&lt;/span&gt;PATH_FOLDER&amp;nbsp;=&amp;nbsp;JExplorer.PATH_THEMES&amp;nbsp;+&amp;nbsp;JExplorer.PATH_THEME&amp;nbsp;+&amp;nbsp&lt;span class='string'&gt;"32x32/filesystems/folder.png"&lt;/span&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class='pclave'&gt;final&lt;/span&gt;&amp;nbsp;&lt;span class='pclave'&gt;static&lt;/span&gt;&amp;nbsp;&lt;span class='pclave'&gt;String&amp;nbsp;&lt;/span&gt;PATH_FILE&amp;nbsp;=&amp;nbsp;JExplorer.PATH_THEMES&amp;nbsp;+&amp;nbsp;JExplorer.PATH_THEME&amp;nbsp;+&amp;nbsp&lt;span class='string'&gt;"32x32/mimetypes/empty.png"&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class='pclave'&gt;final&lt;/span&gt;&amp;nbsp;&lt;span class='pclave'&gt;static&lt;/span&gt;&amp;nbsp;ImageIcon&amp;nbsp;folderIcon&amp;nbsp;=&amp;nbsp;&lt;span class='pclave'&gt;new&lt;/span&gt;&amp;nbsp;ImageIcon(PATH_FOLDER);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class='pclave'&gt;final&lt;/span&gt;&amp;nbsp;&lt;span class='pclave'&gt;static&lt;/span&gt;&amp;nbsp;ImageIcon&amp;nbsp;fileIcon&amp;nbsp;=&amp;nbsp;&lt;span class='pclave'&gt;new&lt;/span&gt;&amp;nbsp;ImageIcon(PATH_FILE);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class='pclave'&gt;private&amp;nbsp;&lt;/span&gt;JList&amp;nbsp;listFiles&amp;nbsp;=&amp;nbsp;&lt;span class='pclave'&gt;new&lt;/span&gt;&amp;nbsp;JList();&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class='pclave'&gt;public&amp;nbsp;&lt;/span&gt;JListFiles()&amp;nbsp;&lt;span class='pclave'&gt;throws&lt;/span&gt;&amp;nbsp;IOException&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class='pclave'&gt;public&amp;nbsp;&lt;/span&gt;JListFiles(&lt;span class='pclave'&gt;String&amp;nbsp;&lt;/span&gt;url)&amp;nbsp;&lt;span class='pclave'&gt;throws&lt;/span&gt;&amp;nbsp;IOException&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this(&lt;span class='pclave'&gt;new&lt;/span&gt;&amp;nbsp;File(url));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class='pclave'&gt;public&amp;nbsp;&lt;/span&gt;JListFiles(File&amp;nbsp;file)&amp;nbsp;&lt;span class='pclave'&gt;throws&lt;/span&gt;&amp;nbsp;IOException&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;listFiles.setLayoutOrientation(JList.HORIZONTAL_WRAP);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;listFiles.setVisibleRowCount(0);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;listFiles.setFixedCellWidth(CELL_WIDTH);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;listFiles.setFixedCellHeight(CELL_HEIGTH);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;loadFiles(file);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class='pclave'&gt;public&amp;nbsp;&lt;/span&gt;&lt;span class='pclave'&gt;void&amp;nbsp;&lt;/span&gt;loadFiles(File&amp;nbsp;file)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;File[]&amp;nbsp;files&amp;nbsp;=&amp;nbsp;file.listFiles();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Vector&amp;nbsp;lista&amp;nbsp;=&amp;nbsp;&lt;span class='pclave'&gt;new&lt;/span&gt;&amp;nbsp;Vector(files.length);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class='pclave'&gt;for&lt;/span&gt;&amp;nbsp;(&lt;span class='pclave'&gt;int&amp;nbsp;&lt;/span&gt;i&amp;nbsp;=&amp;nbsp;0;&amp;nbsp;i&amp;nbsp;&amp;lt;&amp;nbsp;files.length;&amp;nbsp;i++)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;lista.add(files[i]);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;listFiles.setListData(lista);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;listFiles.setCellRenderer(&lt;span class='pclave'&gt;new&lt;/span&gt;&amp;nbsp;MyCellRenderer());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;setViewportView(listFiles);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class='pclave'&gt;class&amp;nbsp;&lt;/span&gt;MyCellRenderer&amp;nbsp;&lt;span class='pclave'&gt;extends&lt;/span&gt;&amp;nbsp;JLabel&amp;nbsp;&lt;span class='pclave'&gt;implements&lt;/span&gt;&amp;nbsp;ListCellRenderer&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class='pclave'&gt;public&amp;nbsp;&lt;/span&gt;MyCellRenderer()&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;setHorizontalAlignment(CENTER);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class='pclave'&gt;public&amp;nbsp;&lt;/span&gt;Component&amp;nbsp;getListCellRendererComponent(JList&amp;nbsp;list,&amp;nbsp;&lt;span class='pclave'&gt;Object&lt;/span&gt;&amp;nbsp;value,&amp;nbsp;&lt;span class='pclave'&gt;int&amp;nbsp;&lt;/span&gt;index,&amp;nbsp;&lt;span class='pclave'&gt;boolean&lt;/span&gt;&amp;nbsp;isSelected,&amp;nbsp;&lt;span class='pclave'&gt;boolean&lt;/span&gt;&amp;nbsp;cellHasFocus)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;File&amp;nbsp;file&amp;nbsp;=&amp;nbsp;(File)value;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;setText(file.getName());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class='pclave'&gt;if&amp;nbsp;&lt;/span&gt;(file.isDirectory())&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;setIcon(folderIcon);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&lt;span class='pclave'&gt;else&lt;/span&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;setIcon(fileIcon);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class='pclave'&gt;if&amp;nbsp;&lt;/span&gt;(isSelected)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;setBackground(list.getSelectionBackground());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;setForeground(list.getSelectionForeground());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&lt;span class='pclave'&gt;else&lt;/span&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;setBackground(list.getBackground());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;setForeground(list.getForeground());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;setVerticalTextPosition(SwingConstants.BOTTOM);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;setHorizontalTextPosition(SwingConstants.CENTER);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;setEnabled(list.isEnabled());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;setFont(list.getFont());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;setOpaque(true);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class='pclave'&gt;return&amp;nbsp;&lt;/span&gt;this;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;Hay que fijarse en MyCellRenderer que es el encargado de crear un icono por cada fichero que encuentre. Cuando queramos implementar las vistas (detalle, icono, vistas en miniatura) será esta clase la que habrá que modificar. También el constructor de la clase JList habrá que modificarlo para que permite las vistas que hemos comentado.&lt;br /&gt;&lt;br /&gt;Para que este componente se vea en el programa modificaremos la clase JExplorer para que tenga el siguiente aspecto:&lt;br /&gt;&lt;br /&gt;&lt;div style="border: 1px solid rgb(90, 90, 90); background: rgb(190, 190, 190) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;div style="padding: 1em;"&gt;&lt;span class="pclave"&gt;package&lt;/span&gt; org.jexplorer;&lt;br /&gt;&lt;br /&gt;&lt;span class="pclave"&gt;import&lt;/span&gt; java.awt.*;&lt;br /&gt;&lt;span class="pclave"&gt;import&lt;/span&gt; javax.swing.*;&lt;br /&gt;&lt;span class="pclave"&gt;import&lt;/span&gt; java.io.IOException;&lt;br /&gt;&lt;br /&gt;&lt;span class="pclave"&gt;public &lt;/span&gt;&lt;span class="pclave"&gt;class &lt;/span&gt;JExplorer &lt;span class="pclave"&gt;extends&lt;/span&gt; JFrame {&lt;br /&gt;    &lt;span class="pclave"&gt;final&lt;/span&gt; &lt;span class="pclave"&gt;static&lt;/span&gt; &lt;span class="pclave"&gt;String &lt;/span&gt;PATH_THEMES = &lt;span class="string"&gt;"C:/java/jexplorer/themes/"&lt;/span&gt;;&lt;br /&gt;    &lt;span class="pclave"&gt;final&lt;/span&gt; &lt;span class="pclave"&gt;static&lt;/span&gt; &lt;span class="pclave"&gt;String &lt;/span&gt;PATH_THEME = &lt;span class="string"&gt;"nuvola/"&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;    &lt;span class="pclave"&gt;private &lt;/span&gt;JListFiles listFiles = null;&lt;br /&gt;&lt;br /&gt;    &lt;span class="pclave"&gt;public &lt;/span&gt;JExplorer() &lt;span class="pclave"&gt;throws&lt;/span&gt; IOException {&lt;br /&gt;        listFiles = &lt;span class="pclave"&gt;new&lt;/span&gt; JListFiles&lt;span class="string"&gt;"C:/"&lt;/span&gt;);&lt;br /&gt;        getContentPane().add(listFiles, BorderLayout.CENTER);&lt;br /&gt;&lt;br /&gt;        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&lt;br /&gt;        &lt;span class="pclave"&gt;int &lt;/span&gt;width = 300;&lt;br /&gt;        &lt;span class="pclave"&gt;int &lt;/span&gt;height = 300;&lt;br /&gt;        setSize(width, height);&lt;br /&gt;        setVisible(true);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    &lt;span class="pclave"&gt;public &lt;/span&gt;&lt;span class="pclave"&gt;static&lt;/span&gt; &lt;span class="pclave"&gt;void &lt;/span&gt;&lt;span class="pclave"&gt;main&lt;/span&gt;(String[] args) &lt;span class="pclave"&gt;throws&lt;/span&gt; IOException {&lt;br /&gt;        &lt;span class="pclave"&gt;new&lt;/span&gt; JExplorer();&lt;br /&gt;    }&lt;br /&gt;}&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;Como se puede apreciar ya está el código preparado (o casi) para poder soportar tema. Estos temas son de linux.&lt;br /&gt;&lt;br /&gt;En las próximas entregas tendremos que empezar a navegar por el control y ordenarlo.&lt;br /&gt;&lt;br /&gt;Saludos&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8932674331825602504-5509390359841736998?l=jexplorer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jexplorer.blogspot.com/feeds/5509390359841736998/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8932674331825602504&amp;postID=5509390359841736998' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8932674331825602504/posts/default/5509390359841736998'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8932674331825602504/posts/default/5509390359841736998'/><link rel='alternate' type='text/html' href='http://jexplorer.blogspot.com/2008/07/la-lista-de-ficheros.html' title='La lista de ficheros'/><author><name>Iñigo</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://4.bp.blogspot.com/_0_Lj8wUYfQM/Sw41BH1HzGI/AAAAAAAAANY/YwBRtAZXtiU/S220/Coyote.bmp'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8932674331825602504.post-8830129618665945390</id><published>2008-07-02T23:57:00.000-07:00</published><updated>2009-06-26T04:06:30.574-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='jexplorer'/><category scheme='http://www.blogger.com/atom/ns#' term='programar'/><category scheme='http://www.blogger.com/atom/ns#' term='swing'/><category scheme='http://www.blogger.com/atom/ns#' term='programación'/><title type='text'>Bienvenido a JExplorer</title><content type='html'>Hace casi 10 años que creé un pequeño programa en Java denominado &lt;a href="http://www.geocities.com/innigo.geo/" target="_blank"&gt;JExplorer&lt;/a&gt;. Este programa era el explorador de ficheros de un proyecto denominado &lt;a href="http://sourceforge.net/projects/jos/" target="_blank"&gt;JOS &lt;/a&gt;que intentaba crear un sistema operativo en Java.&lt;br /&gt;&lt;br /&gt;Además de crear el explorador de ficheros también escribí un entorno de escritorio. Abandonado el proyecto quiero retomar, ahora dicho software, re programando con las nuevas versiones de Java y utilizando la experiencia de estos últimos 10 años.&lt;br /&gt;&lt;br /&gt;Es decir se quiere crear un explorador de ficheros en lenguaje Java. Para ello utilizaremos la última versión de JDK. Se necesitarán bastantes conocimientos de la API Swing.&lt;br /&gt;&lt;br /&gt;Vamos a intentar crear una serie de controles que nos permitan poder crear cualquier otro proyecto relacionado con archivos, no sólo un explorador. De esta forma crearemos de forma independiente un árbol de directorios, una lista de ficheros y carpetas, visualizadores de contenidos, etc.&lt;br /&gt;&lt;br /&gt;Primero miraremos como tengo instalado el entorno de programación.&lt;br /&gt;&lt;br /&gt;Sobre Windows, una vez instalado el &lt;a href="http://java.sun.com/javase/downloads/?intcmp=1281" target="_blank"&gt;JDK&lt;/a&gt; y de tener los comando javac y java en el path del sistema, he creado una carpeta en c:\java denominada jexplorer, con el siguiente contenido:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_0_Lj8wUYfQM/SGyAkN8tyFI/AAAAAAAAAFA/qwTDzQ1OvIA/s1600-h/foto.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_0_Lj8wUYfQM/SGyAkN8tyFI/AAAAAAAAAFA/qwTDzQ1OvIA/s320/foto.JPG" alt="" id="BLOGGER_PHOTO_ID_5218687427923527762" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;En la carpeta src están las fuentes, en bin se quedan los .class y en themes copio los temas de iconos de los proyectos  linux,  para los ejemplo he descargado el tema &lt;a href="http://www.kde-look.org/content/show.php?content=5358" target="_blank"&gt;Nuvola&lt;/a&gt; los cuales usaremos para personalizar nuestro sistema. El fichero compile.bat (para compilar el proyecto) tiene el siguiente contenido:&lt;br /&gt;&lt;br /&gt;javac -cp src -d bin src/org/jexplorer/JExplorer.java&lt;br /&gt;pause&lt;br /&gt;&lt;br /&gt;Y en jexplorer.bat (para ejecutar):&lt;br /&gt;&lt;br /&gt;java -cp bin org.jexplorer.JExplorer&lt;br /&gt;pause&lt;br /&gt;&lt;br /&gt;Empezaremos creando la base de nuestro programa y un explorador de unidades raiz (los discos duros de nuestra máquina y las unidades de red mapeadas).&lt;br /&gt;&lt;br /&gt;La base de nuestro proyecto será el siguiente código:&lt;br /&gt;&lt;br /&gt;&lt;style&gt;.pclave {color: blue;} .string {color: #FF3300;}&lt;/style&gt;&lt;div style='border: solid 1px rgb(90, 90, 90);background: rgb(190, 190, 190)'&gt;&lt;div style='padding: 1em'&gt;&lt;span class='pclave'&gt;package&lt;/span&gt;&amp;nbsp;org.jexplorer;&lt;br /&gt;&lt;br /&gt;&lt;span class='pclave'&gt;import&lt;/span&gt;&amp;nbsp;java.awt.*;&lt;br /&gt;&lt;span class='pclave'&gt;import&lt;/span&gt;&amp;nbsp;javax.swing.*;&lt;br /&gt;&lt;span class='pclave'&gt;import&lt;/span&gt;&amp;nbsp;java.io.IOException;&lt;br /&gt;&lt;br /&gt;&lt;span class='pclave'&gt;public&amp;nbsp;&lt;/span&gt;&lt;span class='pclave'&gt;class&amp;nbsp;&lt;/span&gt;JExplorer&amp;nbsp;&lt;span class='pclave'&gt;extends&lt;/span&gt;&amp;nbsp;JFrame&amp;nbsp;{&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&lt;span class='pclave'&gt;public&amp;nbsp;&lt;/span&gt;JExplorer()&amp;nbsp;&lt;span class='pclave'&gt;throws&lt;/span&gt;&amp;nbsp;IOException&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;span class='pclave'&gt;int&amp;nbsp;&lt;/span&gt;width&amp;nbsp;=&amp;nbsp;300;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;span class='pclave'&gt;int&amp;nbsp;&lt;/span&gt;height&amp;nbsp;=&amp;nbsp;300;&lt;br /&gt;&amp;nbsp;&amp;nbsp;setSize(width,&amp;nbsp;height);&lt;br /&gt;&amp;nbsp;&amp;nbsp;setVisible(true);&lt;br /&gt;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&lt;span class='pclave'&gt;public&amp;nbsp;&lt;/span&gt;&lt;span class='pclave'&gt;static&lt;/span&gt;&amp;nbsp;&lt;span class='pclave'&gt;void&amp;nbsp;&lt;/span&gt;&lt;span class='pclave'&gt;main&lt;/span&gt;(String[]&amp;nbsp;args)&amp;nbsp;&lt;span class='pclave'&gt;throws&lt;/span&gt;&amp;nbsp;IOException&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;span class='pclave'&gt;new&lt;/span&gt;&amp;nbsp;JExplorer();&lt;br /&gt;&amp;nbsp;}&lt;br /&gt;}&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;El cual guardaremos en c:\java\jexplorer\src\org\jexplorer\JExplorer.java&lt;br /&gt;Lo compilamos con Compile.bat y al ejecutarlo con jexplorer.bat tenemos una bonita ventana vacía en pantalla.&lt;br /&gt;&lt;br /&gt;En la próximo entrada haremos el visualizador de unidades (JListRoots).&lt;br /&gt;&lt;br /&gt;Saludos&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8932674331825602504-8830129618665945390?l=jexplorer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jexplorer.blogspot.com/feeds/8830129618665945390/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8932674331825602504&amp;postID=8830129618665945390' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8932674331825602504/posts/default/8830129618665945390'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8932674331825602504/posts/default/8830129618665945390'/><link rel='alternate' type='text/html' href='http://jexplorer.blogspot.com/2008/07/bienvenido-jexplorer.html' title='Bienvenido a JExplorer'/><author><name>Iñigo</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://4.bp.blogspot.com/_0_Lj8wUYfQM/Sw41BH1HzGI/AAAAAAAAANY/YwBRtAZXtiU/S220/Coyote.bmp'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_0_Lj8wUYfQM/SGyAkN8tyFI/AAAAAAAAAFA/qwTDzQ1OvIA/s72-c/foto.JPG' height='72' width='72'/><thr:total>0</thr:total></entry></feed>
