Avatar billede trp79 Nybegynder
05. marts 2003 - 21:33 Der er 12 kommentarer og
1 løsning

Fjerne elementer i JList som består af en ArrayList

Hejsa,
Jeg har en JList som består af en arraylist.
Hvordan opdater jeg JListen når jeg tilføjer eller fjerne elementer i arraylisten?
Jeg troede det skete automatisk, køre en jlist ikke i en tråd for sig selv som andet gui?
Avatar billede arne_v Ekspert
05. marts 2003 - 21:48 #1
Laver du en repaint ?
Avatar billede trp79 Nybegynder
05. marts 2003 - 21:55 #2
Jeg arbejder ikke i apletter, men den virker måske alligevel?
Avatar billede trp79 Nybegynder
05. marts 2003 - 21:55 #3
Jeg prøver lige...
Avatar billede trp79 Nybegynder
05. marts 2003 - 22:01 #4
Nope det virkede ikke :o(

Her er lige lidt kode så du kan se hvad der foregår
jListFirma = new javax.swing.JList(firmaListe.toArray());
jListOms = new javax.swing.JList(tempListe.toArray());
jListFirma.addMouseListener(new MouseAdapter()
{
  public void mousePressed(MouseEvent event)
  {
  if( event.getClickCount() == 1 )
    {
    int index = jListFirma.getSelectedIndex();
    if( index > -1 )
    {
      firma  = (Firma)jListFirma.getModel().getElementAt(index);
      tFLand.setText(firma.getLand());
      tFAdr1.setText(firma.getAdresse1());
      tFAdr2.setText(firma.getAdresse2());
      tFAdr3.setText(firma.getAdresse3());
      tFTlf.setText(firma.getTlf());
      tFFax.setText(firma.getFax());
      tFEmail.setText(firma.getEmail());
      jTAFNoter.setText(firma.getNoter());
      firmaListe.remove(5);    //eks. på sletning
        repaint();

      for(int i = 0; i < omsListe.size(); i++)
      {
      Omsaetning oms = (Omsaetning)omsListe.get(i);
        if(oms.getFirma().equals(firma.getNavn()))
        {
        oms.vis();
        tempListe.add(oms);
        }
    }

    //System.out.println ("Oprettet: " +firma.getOprettet());
    edit(false); //Det er ikke længere muligt redigere i textfelter olg.
    }
}
}
});
Avatar billede arne_v Ekspert
05. marts 2003 - 22:15 #5
Jeg er absolut ikke nogen ørn til Swing.

En søgning på Google fandt:

http://java.sun.com/products/jfc/tsc/tech_topics/jlist_1/jlist.html

og sektionen "Lists with Dynamic Contents", som ser meget interessant ud !
Avatar billede trp79 Nybegynder
05. marts 2003 - 22:19 #6
Det ser jo interessant ud! Jeg kigger lige en gang på det :o)
Avatar billede trp79 Nybegynder
05. marts 2003 - 22:54 #7
Det er næsten lykkes mig, men det driller:

Man kan gøre en list dynamisk således:
  final DefaultListModel model = new DefaultListModel();
  JList list = new JList(model);
(fra http://java.sun.com/products/jfc/tsc/tech_topics/jlist_1/jlist.html)

Jeg har så prøvet at overføre det til mit eget program ved at sige:
(har kigget i API'en på http://java.sun.com/j2se/1.4/docs/api/javax/swing/DefaultListModel.html)

final DefaultListModel model = new DefaultListModel();
model.addElement(firmaListe);
jListFirma = new javax.swing.JList(/*firmaListe.toArray()*/model);

Men så skriver den det ud sådan her:
[BO,2BO,3BO] Altså i en linie istedet for at skrive hvert firma (BO osv) på hver linie.
Jeg troede så at jeg kunne bruge:
  model.addElement(firmaListe.toArray);
Men det går helt galt :o(

Nogle ideer?
Avatar billede arne_v Ekspert
05. marts 2003 - 23:02 #8
Du adder jo hele liste som et element.
Avatar billede arne_v Ekspert
05. marts 2003 - 23:07 #9
Jeg tror at det er meningen at man skal tilføje elementerne
enkeltvis til DefualtListModel.
Avatar billede arne_v Ekspert
05. marts 2003 - 23:08 #10
Så måske noget i retning af:

en løkke der kopierer alle elemnter fra ArrayList til DefaultListModel
GUI stuff
en løkke der kopierer alle elemnter fra DefaultListModel til ArrayList
Avatar billede arne_v Ekspert
05. marts 2003 - 23:09 #11
Og det er meget muligt der findes en smartere metode.

Jeg er begynder på dette område.
Avatar billede trp79 Nybegynder
05. marts 2003 - 23:44 #12
Det er klart! Der skal selvfølgelig til firmaer som elementer. Nu virker det :o) Smider du lige et svar?

Tak for hjælpen, mvh
Torben
Avatar billede arne_v Ekspert
06. marts 2003 - 06:10 #13
svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester