Gå til innhold

JList med flere linjer i hvert element


Anbefalte innlegg

Jeg trenger litt hjelp med JList. Jeg skal ha en liste hvor hvert element skal ha flere linjer (fast antall), men å lære hvordan JList, ListModel, ListDataListener og Vector virker blir alt for mye på en gang. En liste med en-linjere har jeg eksempel på, så det går nok greit, men utover det blir det for mye.

Lenke til kommentar
Videoannonse
Annonse

Her har du mye du må lære deg.

 

To interfacer står her i sentrum:

* ListModel står for innholdet i lista. Dette interfacet har fire metoder som JList trenger for å hente objektene i lista.

 

* ListCelllRenderer brukes for å bestemme hvordan objektene returnert fra ListModel skal se ut i JList.

 

La oss si du har en array av objeter type Person, og hver Person har fornavn og etternavn:

class Person {

public String getFornavn();
public String getEtternavn();
}

En array av Person'er kan implementeres inn i en ListModel:

class PersonListModel implements ListModel {

private Person[] personer = ....;


public getElementAt(int index) {
return personer[index];
}

[... resten kan du vel tenke deg ut selv...]

 

Navnene på personene skal vises på 2 linjer. Altså trengs her en ListCelllRenderer.

public PersonListCelllRenderer implements ListCelllRenderer {
public Component getListCellRendererComponent(
      JList list,
      Object value,            // value to display
      int index,               // cell index
      boolean isSelected,      // is the cell selected
      boolean cellHasFocus)    // the list and the cell have the focus
    {

      Person person = (Person)value; // returneres av getElementAt(int) fra ListModel
      [...her henter du ut fornavn, etternavn, putter dem i f.eks. ...]
      [... en JLabel hver, og hiver de inn i en JPanel som blir returnert...]
      }
}

 

Bruk javadoc og se litt rundt i tutorials hvordan du kommer deg videre herfra. ListDataListener kan du lære deg å bruke etterpå.

 

Edit:

 

Du må selvfølgelig bruke JList-metodene setModel() og setCellRenderer() sammen med de nevnte klassene/interface'ene over.

Endret av Patton
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...