Como agregar elementos (strings) a un jList NetBeans 6.8?

Iniciado por IntoxicKat, 15 Enero 2010, 18:39 PM

0 Miembros y 1 Visitante están viendo este tema.

IntoxicKat

Hola a todos, he estado buscando desde antier y no logro resolver mi problema.

La verdad me enredo mucho con eso de que dicen los documentos o manuales que encuentro en ingles y español. Dicen crea un vector para meter al jlist o dicen que el DefaultListModel. La verdad no entiendo mucho.

Se que tengo que leer mucho mas eso para entender.  

Pero es que me urge este detalle.

Lo que hago es una aplicación desktop con NetBeans 6.8 y le meto un jList1 y luego quiero leer los archivos de un directorio para listarlos en el jList1.
Asi me meto al código del jList1:

Y desde aca intento agregar el código. Pero no pasa nada.
Agrego esto:
Código (java) [Seleccionar]

    //Listar contenido de la carpeta excel en el jList1AAnalizar
       String sDirExcel = "C:/Documents and Settings/sistemas/Mis documentos/NetBeansProjects/excel";
       File f = new File(sDirExcel);    

       //Comprobamos la existencia del directorio.
       if(f.exists())
       {
       }
       else
       {
           JOptionPane.showMessageDialog(null,"Verifica que exista la carpeta excel en su lugar y con el nombre adecuado!");
       }

       //Recorrer directorio y listarlos en el jList1
       File[] ficheros = f.listFiles();
       for(int i = 0; i < ficheros.length; i++)
       {
         //Aca no se como meter todos los archivos del directorio al jList1

       }

Muchas gracias.  

En serio, no he logrado hacer esto.  

Espero me tengan paciencia ya que no se casi nada sobre programación.

Un saludo y de antemano gracias por la respuesta. ;)

Leyer

a tu Jlist tienes que pasarle como argumento  una instancia de DefaultListModel luego utilizando el metodo .addElement(""); del DefaultListModel consigues que se vallan agregando al Jlist :)
ej:

Código (java) [Seleccionar]
DefaultListModel listModel = new DefaultListModel();
JList list = new JList(listModel);
listModel.addElement("");


Saludos.

IntoxicKat

Gracias LEYER.

Al jList le paso como aurumento la instancia de DefaultListModel DefaultListModel listModel = new DefaultListModel();
JList list = new JList(listModel);


Pero al tratar de agregar un elemento, simplemente no me agrega nada al jList1.
Lo hago así: listModel.addElement("");
Que esta mal?

Todo esto esta dentro del boton que he creado.


He dicho que el proyecto lo hice en Netbeans/File/New Proyect/Java Desktop application.

Ya 3 dias con este problema y no puedo! 

Saludos!

Leyer

mmmmmmm bueno si estas haciendo esto asi listModel.addElement(""); claro que no agregara nada  :-\ es decir listModel.addElement("Elemento"); al jlist se le agregara "elemento"

otra cosa no puedes tener todo dentro de la accion del button ya el jlist tiene que estar agregado a tu jframe junto que su defaultListModel .

Saludos.

IntoxicKat

#4
Que tal LEYER.  Gracias por la ayuda y la paciencia-

Le he puesto entre las comillas texto, solo que en lo que postee anteriormente puse
listModel.addElement(""); por descuido.


Ya he metido el jList y el DefaultListModel en el jFrame, pero no resulta nada.

El codigo que esta en mi desktopapplication es este:  
/*
* ListView.java
*/
[code=java]
package list;

import org.jdesktop.application.Action;
import org.jdesktop.application.ResourceMap;
import org.jdesktop.application.SingleFrameApplication;
import org.jdesktop.application.FrameView;
import org.jdesktop.application.TaskMonitor;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.Timer;
import javax.swing.Icon;
import javax.swing.JDialog;
import javax.swing.JFrame;
import java.io.*;
import javax.swing.*;

import java.util.*;



/**
* The application's main frame.
*/
public class ListView extends FrameView {
   //jList y DefaultListModel dentro del frame.
    DefaultListModel listModel = new DefaultListModel();
JList list = new JList(listModel);
   

   public ListView(SingleFrameApplication app) {
       super(app);

       initComponents();
         


       // status bar initialization - message timeout, idle icon and busy animation, etc
       ResourceMap resourceMap = getResourceMap();
       int messageTimeout = resourceMap.getInteger("StatusBar.messageTimeout");
       messageTimer = new Timer(messageTimeout, new ActionListener() {
           public void actionPerformed(ActionEvent e) {
               statusMessageLabel.setText("");
           }
       });
       messageTimer.setRepeats(false);
       int busyAnimationRate = resourceMap.getInteger("StatusBar.busyAnimationRate");
       for (int i = 0; i < busyIcons.length; i++) {
           busyIcons[i] = resourceMap.getIcon("StatusBar.busyIcons[" + i + "]");
       }
       busyIconTimer = new Timer(busyAnimationRate, new ActionListener() {
           public void actionPerformed(ActionEvent e) {
               busyIconIndex = (busyIconIndex + 1) % busyIcons.length;
               statusAnimationLabel.setIcon(busyIcons[busyIconIndex]);
           }
       });
       idleIcon = resourceMap.getIcon("StatusBar.idleIcon");
       statusAnimationLabel.setIcon(idleIcon);
       progressBar.setVisible(false);

       // connecting action tasks to status bar via TaskMonitor
       TaskMonitor taskMonitor = new TaskMonitor(getApplication().getContext());
       taskMonitor.addPropertyChangeListener(new java.beans.PropertyChangeListener() {
           public void propertyChange(java.beans.PropertyChangeEvent evt) {
               String propertyName = evt.getPropertyName();
               if ("started".equals(propertyName)) {
                   if (!busyIconTimer.isRunning()) {
                       statusAnimationLabel.setIcon(busyIcons[0]);
                       busyIconIndex = 0;
                       busyIconTimer.start();
                   }
                   progressBar.setVisible(true);
                   progressBar.setIndeterminate(true);
               } else if ("done".equals(propertyName)) {
                   busyIconTimer.stop();
                   statusAnimationLabel.setIcon(idleIcon);
                   progressBar.setVisible(false);
                   progressBar.setValue(0);
               } else if ("message".equals(propertyName)) {
                   String text = (String)(evt.getNewValue());
                   statusMessageLabel.setText((text == null) ? "" : text);
                   messageTimer.restart();
               } else if ("progress".equals(propertyName)) {
                   int value = (Integer)(evt.getNewValue());
                   progressBar.setVisible(true);
                   progressBar.setIndeterminate(false);
                   progressBar.setValue(value);
               }
           }
       });
   }

   @Action
   public void showAboutBox() {
       if (aboutBox == null) {
           JFrame mainFrame = ListApp.getApplication().getMainFrame();
           aboutBox = new ListAboutBox(mainFrame);
           aboutBox.setLocationRelativeTo(mainFrame);
       }
       ListApp.getApplication().show(aboutBox);
   }

   /** This method is called from within the constructor to
    * initialize the form.
    * WARNING: Do NOT modify this code. The content of this method is
    * always regenerated by the Form Editor.
    */
   @SuppressWarnings("unchecked")
   // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
   private void initComponents() {

       mainPanel = new javax.swing.JPanel();
       jScrollPane1 = new javax.swing.JScrollPane();
       jList1 = new javax.swing.JList();
       jToggleButton1 = new javax.swing.JToggleButton();
       list1 = new java.awt.List();
       menuBar = new javax.swing.JMenuBar();
       javax.swing.JMenu fileMenu = new javax.swing.JMenu();
       javax.swing.JMenuItem exitMenuItem = new javax.swing.JMenuItem();
       javax.swing.JMenu helpMenu = new javax.swing.JMenu();
       javax.swing.JMenuItem aboutMenuItem = new javax.swing.JMenuItem();
       statusPanel = new javax.swing.JPanel();
       javax.swing.JSeparator statusPanelSeparator = new javax.swing.JSeparator();
       statusMessageLabel = new javax.swing.JLabel();
       statusAnimationLabel = new javax.swing.JLabel();
       progressBar = new javax.swing.JProgressBar();

       mainPanel.setName("mainPanel"); // NOI18N

       jScrollPane1.setName("jScrollPane1"); // NOI18N

       jList1.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
       jList1.setName("jList1"); // NOI18N
       jList1.addAncestorListener(new javax.swing.event.AncestorListener() {
           public void ancestorMoved(javax.swing.event.AncestorEvent evt) {
           }
           public void ancestorAdded(javax.swing.event.AncestorEvent evt) {
               jList1AncestorAdded(evt);
           }
           public void ancestorRemoved(javax.swing.event.AncestorEvent evt) {
           }
       });
       jScrollPane1.setViewportView(jList1);

       org.jdesktop.application.ResourceMap resourceMap = org.jdesktop.application.Application.getInstance(list.ListApp.class).getContext().getResourceMap(ListView.class);
       jToggleButton1.setText(resourceMap.getString("jToggleButton1.text")); // NOI18N
       jToggleButton1.setName("jToggleButton1"); // NOI18N
       jToggleButton1.addActionListener(new java.awt.event.ActionListener() {
           public void actionPerformed(java.awt.event.ActionEvent evt) {
               jToggleButton1ActionPerformed(evt);
           }
       });

       list1.setName("list1"); // NOI18N
       list1.addActionListener(new java.awt.event.ActionListener() {
           public void actionPerformed(java.awt.event.ActionEvent evt) {
               list1ActionPerformed(evt);
           }
       });

       javax.swing.GroupLayout mainPanelLayout = new javax.swing.GroupLayout(mainPanel);
       mainPanel.setLayout(mainPanelLayout);
       mainPanelLayout.setHorizontalGroup(
           mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
           .addGroup(mainPanelLayout.createSequentialGroup()
               .addGap(81, 81, 81)
               .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 107, javax.swing.GroupLayout.PREFERRED_SIZE)
               .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 167, Short.MAX_VALUE)
               .addComponent(list1, javax.swing.GroupLayout.PREFERRED_SIZE, 67, javax.swing.GroupLayout.PREFERRED_SIZE)
               .addGap(51, 51, 51))
           .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, mainPanelLayout.createSequentialGroup()
               .addContainerGap(285, Short.MAX_VALUE)
               .addComponent(jToggleButton1)
               .addGap(107, 107, 107))
       );
       mainPanelLayout.setVerticalGroup(
           mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
           .addGroup(mainPanelLayout.createSequentialGroup()
               .addGap(54, 54, 54)
               .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 114, javax.swing.GroupLayout.PREFERRED_SIZE)
               .addContainerGap(81, Short.MAX_VALUE))
           .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, mainPanelLayout.createSequentialGroup()
               .addContainerGap()
               .addComponent(list1, javax.swing.GroupLayout.PREFERRED_SIZE, 139, javax.swing.GroupLayout.PREFERRED_SIZE)
               .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 49, Short.MAX_VALUE)
               .addComponent(jToggleButton1)
               .addGap(28, 28, 28))
       );

       menuBar.setName("menuBar"); // NOI18N

       fileMenu.setText(resourceMap.getString("fileMenu.text")); // NOI18N
       fileMenu.setName("fileMenu"); // NOI18N

       javax.swing.ActionMap actionMap = org.jdesktop.application.Application.getInstance(list.ListApp.class).getContext().getActionMap(ListView.class, this);
       exitMenuItem.setAction(actionMap.get("quit")); // NOI18N
       exitMenuItem.setName("exitMenuItem"); // NOI18N
       fileMenu.add(exitMenuItem);

       menuBar.add(fileMenu);

       helpMenu.setText(resourceMap.getString("helpMenu.text")); // NOI18N
       helpMenu.setName("helpMenu"); // NOI18N

       aboutMenuItem.setAction(actionMap.get("showAboutBox")); // NOI18N
       aboutMenuItem.setName("aboutMenuItem"); // NOI18N
       helpMenu.add(aboutMenuItem);

       menuBar.add(helpMenu);

       statusPanel.setName("statusPanel"); // NOI18N

       statusPanelSeparator.setName("statusPanelSeparator"); // NOI18N

       statusMessageLabel.setName("statusMessageLabel"); // NOI18N

       statusAnimationLabel.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
       statusAnimationLabel.setName("statusAnimationLabel"); // NOI18N

       progressBar.setName("progressBar"); // NOI18N

       javax.swing.GroupLayout statusPanelLayout = new javax.swing.GroupLayout(statusPanel);
       statusPanel.setLayout(statusPanelLayout);
       statusPanelLayout.setHorizontalGroup(
           statusPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
           .addComponent(statusPanelSeparator, javax.swing.GroupLayout.DEFAULT_SIZE, 473, Short.MAX_VALUE)
           .addGroup(statusPanelLayout.createSequentialGroup()
               .addContainerGap()
               .addComponent(statusMessageLabel)
               .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 303, Short.MAX_VALUE)
               .addComponent(progressBar, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
               .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
               .addComponent(statusAnimationLabel)
               .addContainerGap())
       );
       statusPanelLayout.setVerticalGroup(
           statusPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
           .addGroup(statusPanelLayout.createSequentialGroup()
               .addComponent(statusPanelSeparator, javax.swing.GroupLayout.PREFERRED_SIZE, 2, javax.swing.GroupLayout.PREFERRED_SIZE)
               .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
               .addGroup(statusPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                   .addComponent(statusMessageLabel)
                   .addComponent(statusAnimationLabel)
                   .addComponent(progressBar, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
               .addGap(3, 3, 3))
       );

       setComponent(mainPanel);
       setMenuBar(menuBar);
       setStatusBar(statusPanel);
   }// </editor-fold>                        

   private void jToggleButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                              
       // TODO add your handling code here:
            listModel.addElement("mmm");
   }                                              

   private void jList1AncestorAdded(javax.swing.event.AncestorEvent evt) {                                    
       // TODO add your handling code here:

       /*
       //Declarar una instancia de DefaultListModel.
       DefaultListModel listModel;
       //Crearla.
       listModel = new DefaultListModel();
       //Populate it.
       //listModel.addElement("ss");
       //Usar el DefaultListModel en el constructor de JList (String Array).
       JList list = new JList(listModel);
       //Agregar un Item al JList hasta arriba.
       listModel.addElement("item +");
       //Agregar un elemento a JList en el Index especificado.
       listModel.add(2, "mmm");
       //Para borrar item del jlist.
       //listModel.remove(2);
       //Para limpiar todo el JList.
       //listModel.clear();
        *
        */
       
       //Listar contenido de la carpeta excel en el jList1AAnalizar
       String sDirExcel = "C:/Documents and Settings/sistemas/Mis documentos/NetBeansProjects/excel";
       File f = new File(sDirExcel);      

       //JList lista = new JList(new DefaultListModel());
       //Comprobamos la existencia del directorio.
       if(f.exists())
       {
       }
       else
       {
           JOptionPane.showMessageDialog(null,"Verifica que exista la carpeta excel en su lugar y con el nombre adecuado!");
       }

       //Recorrer directorio y listarlos en el jList1AAnalizar
       File[] ficheros = f.listFiles();
       for(int i = 0; i < ficheros.length; i++)
       {
       }          
   }                                    

   private void list1ActionPerformed(java.awt.event.ActionEvent evt) {                                      
       // TODO add your handling code here:
   }                                    

   // Variables declaration - do not modify                    
   private javax.swing.JList jList1;
   private javax.swing.JScrollPane jScrollPane1;
   private javax.swing.JToggleButton jToggleButton1;
   private java.awt.List list1;
   private javax.swing.JPanel mainPanel;
   private javax.swing.JMenuBar menuBar;
   private javax.swing.JProgressBar progressBar;
   private javax.swing.JLabel statusAnimationLabel;
   private javax.swing.JLabel statusMessageLabel;
   private javax.swing.JPanel statusPanel;
   // End of variables declaration                  

   private final Timer messageTimer;
   private final Timer busyIconTimer;
   private final Icon idleIcon;
   private final Icon[] busyIcons = new Icon[15];
   private int busyIconIndex = 0;

   private JDialog aboutBox;
}

[/code]

Es mucho código que se genera automáticamente.

Yo creo que algo anda mal, porque si meto otro jList (sería jList2), como indico a que jList meter el string. si al jList1 o al jList2. (sólo en caso de que tenga dos jList)

La verdad ya me comenzé a desesperar porque por mas que veo ejemplos no logro entender eso de DefaultListModel y todo eso.

Espero la ayuda de alguien.

Un saludo!


Leyer

#5
no necesito correr el code para saber que esta mal :P ademas no uso netbeans por el cual me generaria errores en el code.

1- cuando haces esto

Código (java) [Seleccionar]
/**
* The application's main frame.
*/
public class ListView extends FrameView {
   //jList y DefaultListModel dentro del frame.
    DefaultListModel listModel = new DefaultListModel();
JList list = new JList(listModel);
   


No lo estas AGREGANDO al Jframe claro esta.


2-Veo que tienes ya un Jlist autogenerado por Netbeans bueno ha ese es al que tienes que pasarle el DefaultListModel y es hay entoces que puedes hacer  listModel.addElement("");

mas Facil aun...

EN lla declaracion de variables agrega una instancia del DefaultListModel

Código (java) [Seleccionar]
   // Variables declaration - do not modify                    
   private javax.swing.JList jList1;
   private DefaultListModel defaultListModel = new DefaultListModel(); // has una instancia del DefaultList Model
   private javax.swing.JScrollPane jScrollPane1;
  ....


Entonces aqui... al Jlist le pasas la instancia del DefaultListModel

Código (java) [Seleccionar]

   @SuppressWarnings("unchecked")
   // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
   private void initComponents() {

       mainPanel = new javax.swing.JPanel();
       jScrollPane1 = new javax.swing.JScrollPane();
       jList1 = new javax.swing.JList(defaultListModel); //Le pasas la instancia del DefaultListModel
       jToggleButton1 = new javax.swing.JToggleButton();


y bueno ya  solo te faltaria llamar a defaultListModel.addElement("Elemento");


Saludos y suerte.

taam

#6
hola =) ... a mi no me quedo muy claro como realizaron el proceso, lo que yo necesito hacer es que a medida que se agregan string en un textfield, utilizando jframe, este me los muestre en un jlist... si alguien me pudiera decir cómo le estaria muy agradecida :)

sapito169

#7
-cambiate a cualquier otro ide recomieno block de notas
-cuando sepas lo que ases recien usa netbeans
-trata de leer tu propio codigo osea el que tu mismo as creado usando el asistente
-netbeans siempre ase demasiado codigo autogenerado

siempre es lo mismo un novato tratando de resolver un problema con netbeans sin conocer ni swing ni lo que son eventos

sapito169

ya te dijeieron como se ases lo que tienes que hacer es cambiarte de ide  >:(

euroluar

tuve el mismo inconveniente con el JList... lo que yo hice ( no cambiarme de IDE y aprender como se usa )

lo siguiente:

public static void cargar_jlist()
{
       try{
           DefaultListModel defaultListModel = new DefaultListModel();
           
          do{
           defaultListModel.addElement(temp_rs.getObject("columna").toString());

           }while(temp_rs.next());

           frame1.jList1.setModel(defaultListModel);
       }//fin del try
       catch(SQLException e){
             System.out.println(" SQL Exception: "+ e.toString());
        }

}


...esta funcion debe ser llamada en algun lado y listo :)

Saludos y aguante el NB  ;-)