Avatar billede andersjo Nybegynder
06. marts 2003 - 12:49 Der er 3 kommentarer og
1 løsning

Oppdatere en JList

Hei.

Jeg har laget en JList som ikke inneholder noen elementer.

String data[] = new String[100];

Panel listPanel2 = new Panel();
JList liste = new JList(data);

listPanel2.add(liste);
add(listPanel2, "East");

Så ønsker jeg å fylle listen med data. Jeg har laget en ny data[] med innhold. Men hvordan får jeg oppdatert listen? Må jeg bruke
    liste = new JList(data);
eller finnes det noe annet som ex.
    liste.add.....

Hilsen Anders
Avatar billede viht Nybegynder
06. marts 2003 - 13:39 #1
Hvis du vil arbejde på listens indhold skal du bruge listens model. En JList bruger ligesom mange andre Swing komponenter på Model View Controller. Hvis du vil fjerne en listes komponenter bruger du:
list.getModel().removeAllElements();
Hvis du vil tilføje elementer:
list.getModel().addElement(Object element);

Se også dette eksempel, hvor jeg har en instans af JListens model, som jeg arbejder på hver gang noget indhold i listen skal ændres. På den måde er du fri for at kalde list.getModel() hver gang. Du kan højreklikke på elementer i listen for at se info om dem.

// TestFrame.java:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

import java.util.*;
import java.io.*;

public class TestFrame extends JFrame {
   
    private DefaultListModel model;
    private JList guiListe;
    private ArrayList liste;
    private JPopupMenu popup;
   
    public TestFrame() {
        super("Test");
        setSize(400,400);
       
        liste = new ArrayList();
        liste.add(new Element("Element1"));
        liste.add(new Element("Element2"));
        liste.add(new Element("Element3"));
        liste.add(new Element("Element4"));
        liste.add(new Element("Element5"));
        liste.add(new Element("Element6"));
        liste.add(new Element("Element7"));
        liste.add(new Element("Element8"));
       
        model = new DefaultListModel();
        for( int i = 0; i < liste.size(); i++ ) {
            model.addElement(liste.get(i));
        }
        guiListe = new JList(model);
        guiListe.addMouseListener(new PopupListener());
       
        popup = new JPopupMenu();
        JMenuItem showItem = new JMenuItem("Vis");
        showItem.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent event) {
                showItem();
            }
        });
        JMenuItem deleteItem = new JMenuItem("Slet");
        deleteItem.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent event) {
                deleteItem();
            }
        });
        popup.add(showItem);
        popup.add(deleteItem);
       
        getContentPane().add(new JScrollPane(guiListe));
    }
   
    private void showItem() {
        Element element = (Element)model.get(guiListe.getSelectedIndex());
        JOptionPane.showMessageDialog(this, element.getNavn());
    }
    private void deleteItem() {
        int index = guiListe.getSelectedIndex();
        model.remove(index);
        liste.remove(index);
    }
   
    private  class PopupListener extends MouseAdapter {
        public void mousePressed(MouseEvent e) {
            maybeShowPopup(e);
        }

        public void mouseReleased(MouseEvent e) {
            maybeShowPopup(e);
        }

        public void mouseClicked(MouseEvent e) {
          maybeShowPopup(e);
        }

        public void maybeShowPopup(MouseEvent e) {
            if (e.isPopupTrigger()) {
                Point point = new Point(e.getX(), e.getY());
                int index = guiListe.locationToIndex(point);
                if( index > -1 ) {
                    guiListe.setSelectedIndex(guiListe.locationToIndex(point));   
                    popup.show(e.getComponent(), e.getX(), e.getY());
                }
            }
        }
    }
   
    private class Element implements Serializable {
       
        private String navn;
       
        public Element(String navn) {
            this.navn = navn;
        }
       
        public String getNavn() {
            return navn;
        }
        public void setNavn(String navn) {
            this.navn = navn;
        }
        public String toString() {
            return navn;
        }
    }
}

class Go {
    public static void main(String[] args) {
      new TestFrame().show();
  }
}
Avatar billede arne_v Ekspert
06. marts 2003 - 19:21 #2
Se:

http://www.eksperten.dk/spm/325035

(når Eksperten virker igen altså !)
Avatar billede andersjo Nybegynder
10. maj 2003 - 19:19 #3
Fikset det til slutt selv..
Takk for hjelpen.
Avatar billede viht Nybegynder
10. maj 2003 - 21:26 #4
B***shit!
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