kostenloser Webspace werbefrei: lima-city


JList - Item hinzufügen / Liste leeren

lima-cityForumProgrammiersprachenJava

  1. Autor dieses Themas

    toolz

    Kostenloser Webspace von toolz

    toolz hat kostenlosen Webspace.

    Ich brauche etwas Hilfe für die JList. Wie kann ich ein Item hinzufügen und wie kann ich die Liste leeren?
    SetModel tut es nicht. Hier kann ich kein Item hinzufügen.
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. k***o

    Vllt so (habs nicht probiert):
    private DefaultListModel model;
    		
    model = new DefaultListModel() {			
    {
    addElement("Item0");
    addElement("Item1");
    }
    };
    		
    list = new JList(model);


    oder so:

    ((DefaultListModel)list.getModel()).addElement(...);



    Beitrag zuletzt geändert: 16.5.2009 15:24:40 von koslo
  4. Autor dieses Themas

    toolz

    Kostenloser Webspace von toolz

    toolz hat kostenlosen Webspace.

    Nein, das wars nicht...
    es existiert der Befehl addElement() nicht...
  5. k***o

    Bei mir existiert er. du musst auf das ListModel zugreifen.
  6. Autor dieses Themas

    toolz

    Kostenloser Webspace von toolz

    toolz hat kostenlosen Webspace.

    Oh! Ja doch, aber wie füge ich jetzt den String in das Objekt?

    Und wie leere ich die Liste wieder?
  7. k***o

    Einfügen:

    ((DefaultListModel)list.getModel()).addElement(...);

    Aktualisieren der Liste vllt mit:

    list.revalidate();

    Löschen vllt mit:

    list.setModel(null);


    Wie gesagt, ich weiß nicht, ob es geht. Ich denke auch, dass das nicht die besten Lösung ist. Besser wäre es ein eigenes ListModel zu schreiben...
  8. Autor dieses Themas

    toolz

    Kostenloser Webspace von toolz

    toolz hat kostenlosen Webspace.

    koslo schrieb:
    ((DefaultListModel)list.getModel()).addElement(...);


    Ja, aber da muss ein Objekt rein! Wie bekomme ich also in das Objekt den String?


    list.setModel(null);


    Das geht nicht.
  9. k***o

    String ist eine abgeleitete Klasse von Object:

    ((DefaultListModel)list.getModel()).addElement(STRING);
  10. Autor dieses Themas

    toolz

    Kostenloser Webspace von toolz

    toolz hat kostenlosen Webspace.

    Dann kommt aber folgende Fehlermeldung:

    A java.lang.NullPointerException exception has occurred.
    Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: htmleditor.Editor$1 cannot be cast to javax.swing.DefaultListModel
    Link zu:
    ((DefaultListModel)Liste.getModel()).addElement(hc[n]);

    hc[] als ein String- Array

    ... ? ...
  11. k***o

    vllt deswegen:

    A java.lang.NullPointerException exception has occurred.

    Ich weiß es nicht, ich kenn dein Code nicht. Aber wenn hc ein String [] (-Array) ist dann ist hc[] ein String.
    Kannst es ja mal mit einem Text probieren und schauen ob es geht.
  12. Moin,

    Koslo hat Dir schon richtige Ansätze gegeben, wenn nicht sogar die komplette Lösung.
    Wenn Du uns mit Deinem Code versorgen würdest, so könnte man auch tiefgreifender darauf eingehen.

    Also Source her, sonst kann man hier nur weiter spekulieren ;-)

    Gruß,
    Pawnee
  13. Autor dieses Themas

    toolz

    Kostenloser Webspace von toolz

    toolz hat kostenlosen Webspace.

    :smile: Der Code ist etwas lang, deshalb stelle ich hier nur die Funktion rein, in der der Fehler (denke ich doch, dass er hier ist) auftritt...
    Es handelt sich um einen HTML- Editor, von mir geschrieben. Die Class HTML ist eine Klasse, welche einen String mit sämtlichen HTML- Befehlen enthält (dass der String extrahiert wird, ist natürlich nicht optimal, aber ich sehe erst jetzt, dass ich den Schritt sparen kann). Der String code enthält das Wort, das gerade geschrieben wird.

    private void Hilf(String code) {
            String vorschlag;
            String hc[] = HTML.getCode();
            for (int n = 0; n < 11; n++) {
                try {
                    vorschlag = hc[n].substring(0, code.length());
                } catch (StringIndexOutOfBoundsException ex) {
                    vorschlag = null;
                }
                if (code.equals(vorschlag)) {
                    ((DefaultListModel)Liste.getModel()).addElement(hc[n]);
                }
            }
        }


    Beitrag zuletzt geändert: 16.5.2009 22:05:17 von toolz
  14. Moin,

    also was hier wohl grundlegend geändert werden müsste, wäre der Zugriff.
    In Deinem Beispiel greifst Du direkt auf die JList und dem ListModel zu.

    Demnach würde ich vorschlagen, dass Du es komplett auseinander nimmst und nach MVC-Prinzip aufteilst.
    Und zwar so, dass Deine Methode etwas zum ListModel hinzufügt.
    Über einen Listener wird die JList dann verständigt, dass sich das Model geändert hat und entsprechend aktualisiert wird.
    Sei es ob Du per add-Methode etwas hinzugefügt oder per clear-Methode die Liste geleert hast.

    Für eine umfassende Erklärung von Model-View-Bezügen gibt es ein Linkverzeichnis im Java-Forenbereich zu ordentlichen Tutorials.

    Gruß,
    Pawnee
  15. Autor dieses Themas

    toolz

    Kostenloser Webspace von toolz

    toolz hat kostenlosen Webspace.

    Ich komme da nicht ganz dahinter.
    Welchen Listener benötige ich genau? Und wie verbinde ich den mit dem ListModel?
    Ist das der ListDataListener?

    Beitrag zuletzt geändert: 19.5.2009 20:07:18 von toolz
  16. k***o

    Schau ma hier:

    http://freenet-homepage.de/koslo/JList.htm

    Ist nicht der beste Code, sollte aber dein Problem auf die einfachste Art lösen!

    Beitrag zuletzt geändert: 19.5.2009 22:06:07 von koslo
  17. Moin,

    Hier ist der entsprechende Link auf den ich in meinem voherigen Beitrag hingewiesen habe:
    http://java.sun.com/docs/books/tutorial/uiswing/components/list.html

    Dort ist beschrieben, wie man eine JList mit dem ListModel verbindet und auf Änderungen reagiert.
    Mehr brauchst Du gar nicht...

    Gruß,
    Pawnee
  18. Autor dieses Themas

    toolz

    Kostenloser Webspace von toolz

    toolz hat kostenlosen Webspace.

    Danke, das hat mir sehr geholfen. Ich habe es auch ohne den Listener geschafft, indem ich erst ein ListModel gefüllt habe und am Ende der Funktion dieses in die Liste eingebunden habe.
  19. Ich weiß nicht, ob dir das jetzt noch hilft, aber so könnte man es machen:
    String[] elements = {
        "Element 1",
        "Element 2",
    };
    
    DefaultListModel model = new DefaultListModel();
    
    for (String element : elements)
        model.addElement(element);
    
    jList1.setModel(model);
    // jList1.setSelectedIndex(0);


    Beitrag zuletzt geändert: 28.5.2009 18:40:58 von devex
  20. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!