Avatar billede macpain Nybegynder
02. maj 2005 - 22:51 Der er 17 kommentarer og
1 løsning

JList og ListModel

Jeg har brug for nogle gode eksempler i brug af JList og ListModel.

Her mener jeg ikke bare hvor man tilføjer strenge, men hvor man tilføjer et objekt som jeg selv har lavet. Og når man vælger sit objekt på listen, bestemmer jeg hva der skal ske.
Avatar billede mikkelbm Nybegynder
02. maj 2005 - 23:03 #1
Her er et køreklart eksempel:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;

public class ListExample extends JFrame
{
    private DefaultListModel model = new DefaultListModel();
    private JList list = new JList (model);
    private JLabel label = new JLabel("Vælg...");
   
    public ListExample ()
    {
        this.setSize(300, 300);
        this.getContentPane().add(new JScrollPane (list), BorderLayout.CENTER);
        this.getContentPane().add(label, BorderLayout.SOUTH);
       
        for (int i = 0; i<50; i++)
        {
            model.addElement(new MyObject("Test " + i, new Date()));
        }
       
        list.addMouseListener(new MouseAdapter()
        {
            public void mousePressed (MouseEvent e)
            {
                if (e.getClickCount() == 2)
                {
                    doSomething ();
                }
                else
                {
                    doSomethingElse ();
                }
            }
        });
    }
   
    private void doSomething ()
    {
        MyObject obj = (MyObject)list.getSelectedValue();
        if (obj != null)
        {
            label.setText("Dobbeltklik... " + obj.toString());
        }
    }
   
    private void doSomethingElse ()
    {
        MyObject obj = (MyObject)list.getSelectedValue();
        if (obj != null)
        {
            label.setText(obj.toString());
        }
    }
   
    private class MyObject
    {
        private String name;
        private Date date;
       
        public MyObject (String name, Date date)
        {
            this.date = date;
            this.name = name;
        }
       
        public String getName ()
        {
            return name;
        }
       
        public Date getDate ()
        {
            return date;
        }
       
        public String toString()
        {
            return "Objekt: " + name + " - " + date.toString();
        }
    }
   
    public static void main (String[] args)
    {
        new ListExample ().setVisible(true);
    }
}
Avatar billede mikkelbm Nybegynder
02. maj 2005 - 23:08 #2
Spørg bare hvis du er i tvivl om noget...
Avatar billede macpain Nybegynder
02. maj 2005 - 23:50 #3
Det ser rimelig fornuftigt ud!!!

Men kan det lade sig gøre at bruge en klasse, der reagere forskelligt på forskellige rækker.
Avatar billede macpain Nybegynder
02. maj 2005 - 23:51 #4
Forstået på den måde at det er forskellige metoder man ligger ned i listen
Avatar billede mikkelbm Nybegynder
02. maj 2005 - 23:51 #5
Prøv at uddybe. Skal det være samme klassetype, eller hvad mener du?
Avatar billede mikkelbm Nybegynder
02. maj 2005 - 23:53 #6
Ahh... så ikke din sidste kommentar.
Avatar billede mikkelbm Nybegynder
02. maj 2005 - 23:54 #7
Jeg kan ikke lige se hvordan det skal kunne lade sig gøre.

Du kan give dine objekter en værdi, du så kan trække ud af dem og handle derefter.
Avatar billede macpain Nybegynder
02. maj 2005 - 23:57 #8
Tænkte det samme!! vil lige overveje mulighederne.

Men hva med at extende JList eller ListModel, kan man ikke få noget ud af det?
Avatar billede mikkelbm Nybegynder
02. maj 2005 - 23:58 #9
Hmmm... Kan ikke se hvad du vil ha' ud af det? Kan du give et konkret eksempel på, hvad du vil bruge det til?
Avatar billede mikkelbm Nybegynder
03. maj 2005 - 00:03 #10
Det du kan gøre er, at lave et overordnet interface, som din objekter i listen nedarver fra. I dette interface har du så den metode som skal udføre en given opgave.
Når der så bliver trykket på et element i listen hiver du dette ud og caster til dit interface:

IMyInterface inter = (IMyInterface)list.getSelectedValue();
inter.doWhatEver ();


På den måde kan du fylde mange forskellige objekter i listen, så længe de bare nedarver fra dette interface.

Ved ikke om det kan bruges?
Avatar billede macpain Nybegynder
03. maj 2005 - 00:07 #11
Vil prøve.....

Har et udtræk fra en database!

I dette udtræk er der fire forskellige typer, med hver deres opførsel. Det de har til fældes er den PK der kommer med.

PK vil jeg ligge i en liste(en normal), når der så bliver trykket på PK nr. X bliver 4 lister fyldt med data, som der kan vælges eller fravælges til brug senere.

MEN den ene liste har en værdi der kan tage to værdier, så når denne vælges skal der startes en dialog der kan hente værdierne!!

Håber det er forståeligt
Avatar billede mikkelbm Nybegynder
03. maj 2005 - 00:10 #12
Jeg tror ikke den logik hører hjemme på selve objektet, men nok nærmere i en metode i gui'en, som vi først var inde og runde.
Avatar billede macpain Nybegynder
03. maj 2005 - 00:11 #13
har en værdi der kan tage to værdier....prøver igen

det ene feldt kan holde to værdier, i bagved liggende attributter
Avatar billede macpain Nybegynder
03. maj 2005 - 00:13 #14
Jeg kan ikke stave lige nu, må være ved at være træt....feldt hrmm.. flot

Jeg tror du har ret...
Avatar billede macpain Nybegynder
03. maj 2005 - 00:16 #15
Vil prøve at implementere det i morgen.

Hvis det er løsningen er pointene dine...first thing in the morning (",)
Avatar billede mikkelbm Nybegynder
03. maj 2005 - 00:17 #16
Ok :)
Avatar billede macpain Nybegynder
03. maj 2005 - 18:10 #17
It works like a charm!!!
Avatar billede mikkelbm Nybegynder
14. maj 2005 - 20:07 #18
Lukketid?
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

IT-JOB

Forsvarsministeriets Regnskabsstyrelse

Datadesigner

G. Tscherning A/S

IT & Digitaliseringsansvarlig

SOS International

IT Procurement Manager