Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.java.help > #2327

Re: Long delay when using JComboBox.setSelectedIndex() ??

Newsgroups comp.lang.java.help
Date 2012-12-05 10:46 -0800
References <b396252c-b370-413b-963b-97313f83a30f@googlegroups.com> <e11b4b5d-76ae-4eb0-b29a-b5c40ad59937@googlegroups.com> <1f53fcab-243d-47aa-9b17-a1216b1e8138@googlegroups.com>
Message-ID <bc9f2f27-8ee5-41ef-b03c-575939131caa@googlegroups.com> (permalink)
Subject Re: Long delay when using JComboBox.setSelectedIndex() ??
From kedward777@gmail.com

Show all headers | View raw


Thank you for your input! 

I know doing io on the EDT is not optimal, but I was just trying to provide a short code snippet to illustrate the problem. The issue is happening well AFTER I load the employee names from disk. The delay is happening right after I setSelectedIndex(3) on the jcombobox..

Can you show me how to override equals ??

Thank you again!
Ken

On Wednesday, December 5, 2012 1:35:50 PM UTC-5, Lew wrote:
> kedwa...@gmail.com wrote:
> 
> > I am attempting to load 5000 employee items into a jcombobox, and then setSelectedIndex, but I am getting a odd delay in the gui after setting the selectedIndex
> 
> > 
> 
> > 1) If I load the 5000 employee names using a simple vector, it works fine. When I call 
> 
> 
> 
> 'vector' or "vector" or 'Vector'?
> 
> 
> 
> > setSelectedIndex(5), it sets the combobox to the 5th element, very quickly. This works fine:
> 
> > 
> 
> >  while ((line = input.readLine()) != null) {
> 
> 
> 
> This is a slow action on the EDT. Bad.
> 
> 
> 
> >                 StringTokenizer st = new StringTokenizer(line, "|");
> 
> >                 lastName = st.nextToken().trim();
> 
> >                 firstName = st.nextToken().trim();
> 
> >                 id = Integer.parseInt(st.nextToken().trim());
> 
> 
> 
> 'lastName, 'firstName', and 'id' should be declared locally to the loop.
> 
> 
> 
> >                  comboBoxItems.add(lastName);}
> 
> >                 mybox1.setModel(new javax.swing.DefaultComboBoxModel(model));
> 
> >                 mybox1.setSelectedIndex(5);
> 
> > 
> 
> > 2)HOWEVER, if I load an employee object into a mapped vector, and then setSelectedIndex(5), I DO 
> 
> 
> 
> What is a "mapped vector"?
> 
> 
> 
> > see it instantly set the GUI combobox to the 5th item, BUT then there is a LOOOONG delay in the gui (1 minute or more) before it allows me to do anything further in the gui
> 
> > 
> 
> >  while ((line = input.readLine()) != null) {
> 
> 
> 
> This is a slow action on the EDT. Bad.
> 
> 
> 
> >                 StringTokenizer st = new StringTokenizer(line, "|");
> 
> >                 lastName = st.nextToken().trim();
> 
> >                 firstName = st.nextToken().trim();
> 
> >                 id = Integer.parseInt(st.nextToken().trim());
> 
> >                 empBuffer=  new Employee(id, lastName );
> 
> 
> 
> 'lastName, 'firstName', 'id' and 'empBuffer' should be declared locally to the loop.
> 
> 
> 
> >                 map.put(empBuffer.getId()+"",empBuffer ); 
> 
> >                 count++; }
> 
> >                 
> 
> >              model.addAll(map.values()); 
> 
> >              Collections.sort(model); 
> 
> >              mybox1.setModel(new javax.swing.DefaultComboBoxModel(model));
> 
> >              mybox1.setSelectedIndex(5);
> 
> > 
> 
> > public class Employee implements Comparable { 
> 
> >          private int id; 
> 
> >          private String name; 
> 
> > 
> 
> >          public Employee(int id, String name) { 
> 
> >              this.id = id; 
> 
> >              this.name = name; 
> 
> >          } 
> 
> > 
> 
> >          public String getName() { 
> 
> >              return name; 
> 
> >          } 
> 
> > 
> 
> >          public int getId() { 
> 
> >              return id; 
> 
> >          } 
> 
> > 
> 
> >          public int compareTo(Object emp) { 
> 
> >              return getName().compareTo(((Employee)emp).getName()); 
> 
> >          } 
> 
> > 
> 
> >          public String toString() { 
> 
> >              return getName()+","+getId(); 
> 
> >          } 
> 
> >      }
> 
> 
> 
> You should override 'equals()' to match 'compareTo()' so the model will work right.
> 
> 
> 
> kedwa...@gmail.com wrote:
> 
> > CORRECTION, both examples have the same problem. I thought the first example was working, but in each case AFTER I call setSelectedIndex, the GUI DOES quickly go to the item in the combobox , but then the whole gui hangs for about a minute ???? Why? If I replace the combobox with a jtextfield, it works without delay...
> 
> 
> 
> How long does 'input.readLine()' take, and why are you doing it on the EDT?
> 
> 
> 
> I/O is much slower than CPU activity. You are causing the GUI to wait for 5000 lines of read. Bad.
> 
> 
> 
> Don't do it on the EDT.
> 
> 
> 
> -- 
> 
> Lew

Back to comp.lang.java.help | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

Long delay when using JComboBox.setSelectedIndex() ?? kedward777@gmail.com - 2012-12-05 09:27 -0800
  Re: Long delay when using JComboBox.setSelectedIndex() ?? kedward777@gmail.com - 2012-12-05 10:08 -0800
    Re: Long delay when using JComboBox.setSelectedIndex() ?? Lew <lewbloch@gmail.com> - 2012-12-05 10:35 -0800
      Re: Long delay when using JComboBox.setSelectedIndex() ?? kedward777@gmail.com - 2012-12-05 10:46 -0800
        Re: Long delay when using JComboBox.setSelectedIndex() ?? Lew <lewbloch@gmail.com> - 2012-12-05 11:31 -0800
        Re: Long delay when using JComboBox.setSelectedIndex() ?? Roedy Green <see_website@mindprod.com.invalid> - 2012-12-05 16:16 -0800
          Re: Long delay when using JComboBox.setSelectedIndex() ?? Lew <lewbloch@gmail.com> - 2012-12-05 16:34 -0800
            Re: Long delay when using JComboBox.setSelectedIndex() ?? Knute Johnson <nospam@knutejohnson.com> - 2012-12-05 16:40 -0800
              Re: Long delay when using JComboBox.setSelectedIndex() ?? Lew <lewbloch@gmail.com> - 2012-12-05 16:58 -0800
            Re: Long delay when using JComboBox.setSelectedIndex() ?? Roedy Green <see_website@mindprod.com.invalid> - 2012-12-06 15:32 -0800
              Re: Long delay when using JComboBox.setSelectedIndex() ?? Lew <lewbloch@gmail.com> - 2012-12-06 18:04 -0800
  Re: Long delay when using JComboBox.setSelectedIndex() ?? Knute Johnson <nospam@knutejohnson.com> - 2012-12-05 16:15 -0800
  Re: Long delay when using JComboBox.setSelectedIndex() ?? Gene Wirchenko <genew@telus.net> - 2012-12-12 18:15 -0800

csiph-web