Swing Arraylist in jList anzeigen

BananenBrötchen

Neues Mitglied
Ich würde gerne eine ArrayList auf Knopfdruck in eine jList anzeigen lassen(Java Editor), hab aber nichts gefunden was mir weiterhilft.
Hier ist unsere ArrayList und wie ich die Werte abspeicher.

ArrayList<Einkaufsliste> lebensmittel = new ArrayList <Einkaufsliste>();

public void bHinzufugen_ActionPerformed(ActionEvent evt) {
// TODO hier Quelltext einfügen
lebensmittel.add(new Einkaufsliste(jArtikel.getText(), jAnzahl.getInt())); // Werte abspeichern
} // end of bHinzufugen_ActionPerformed
 

mihe7

Top Contributor
Das ist ein wenig wenig an Information. Die JList gibt es schon? Wird die aktuell bereits befüllt? Wie? Usw.

Ich würde ein ListModel implementieren, das die ArrayList an die JList anbindet. Das UI arbeitet dann mit dem Model und die Liste aktualisiert sich automatisch.
 

BananenBrötchen

Neues Mitglied
Das ist ein wenig wenig an Information. Die JList gibt es schon? Wird die aktuell bereits befüllt? Wie? Usw.

Ich würde ein ListModel implementieren, das die ArrayList an die JList anbindet. Das UI arbeitet dann mit dem Model und die Liste aktualisiert sich automatisch.
Die jList gibt es schon, jedoch scheiter ich ein wenig beim ausfüllen und anzeigen.
Die Arraylist soll über zwei Eingabe Felder und einem hinzufüge Button gefüllt werden, das sollte auch schon funktionieren.
Ich hab die Dateien einfach mal angehängt.
 

Anhänge

  • Einkaufsliste.java
    469 Bytes · Aufrufe: 1
  • Zettel.java
    3,8 KB · Aufrufe: 2

Jw456

Top Contributor
Den Klassen Bezeichner Einkufsliste finde ich nicht so sinnvoll gewählt.
Denn das ist bestimmt noch keine Liste sondern nur produkte. Die du mit add erst zu einer Liste hinzufügt.
 

mihe7

Top Contributor
Ich hab die Dateien einfach mal angehängt.
Genau, in Zettel.java verwendest Du ja schon ein ListModel - konkret ein DefaultListModel. Das DefaultListModel kannst Du auch verwenden, dann musst Du aber dafür sorgen, dass im DefaultListModel die gleichen Änderungen durchgeführt werden wie in Deiner lebensmitel-ArrayList. Heißt: wenn Du in lebensmittel etwas einfügst, musst Du auch in jListeModel einfügen.

Das Problem hier ist, dass Du keine saubere Trennung zwischen UI und Daten hast. Daher würde ich tun, was ich oben geschrieben habe. Das UI arbeitet dann nur mit dem ListModel, der Rest ergibt sich dann automatisch.
 

Jw456

Top Contributor
Was ich mich bei dem Code frage wo du die Variable liste erstellt hast?
Java:
public void bAnzeigen_ActionPerformed(ActionEvent evt) { 109 liste.add(jArtikel);.....
 

mihe7

Top Contributor
Wir können ja mal schnell eine Anwendung schreiben. Ich nehme mal Personen mit Vor- und Nachnamen.

Kümmern wir uns erstmal um die Daten:
[code lang=Java title=Person.java]
import java.util.Objects;

class Person {
private final String name;
private final String firstName;

public Person(String name, String firstName) {
this.name = name;
this.firstName = firstName;
}

public String name() {
return name;
}

public String firstName() {
return firstName;
}

@Override
public boolean equals(Object o) {
if (o == null || o == this || !(o instanceof Person)) {
return o == this;
}

Person other = (Person) o;
return Objects.equals(name, other.name) && Objects.equals(firstName, other.firstName);
}

@Override
public int hashCode() {
return Objects.hash(name, firstName);
}

@Override
public String toString() {
return name + ", " + firstName;
}
}
[/code]

So, jetzt brauchen wir ein UI, das die Liste verwalten kann. Da packen wir eine JList, zwei Textfelder und einen Button rein. Auf ansprechendes Layout verzichte ich mal. Das UI soll mit einem PersonListModel arbeiten, das man beim Erstellen der PersonView mitgeben kann:
[code lang=Java title=PersonView.java]
import java.awt.GridLayout;
import java.util.Objects;
import javax.swing.*;

class PersonView {
private JTextField name = new JTextField();
private JTextField firstName = new JTextField();
private PersonListModel persons;

public PersonView(PersonListModel persons) {
Objects.requireNonNull(persons);
this.persons = persons;
}

public JFrame show() {
JList<Person> list = new JList<>();
list.setModel(persons);
name = new JTextField(20);
firstName = new JTextField(20);
JButton createButton = new JButton("Person erstellen");
createButton.addActionListener(e -> createPerson());

JPanel editor = new JPanel();
JPanel editorContents = new JPanel(new GridLayout(0,1));
editorContents.add(new JLabel("Name:"));
editorContents.add(name);
editorContents.add(new JLabel("Vorname:"));
editorContents.add(firstName);
editorContents.add(new JLabel(" "));
editorContents.add(createButton);
editor.add(editorContents);

JPanel panel = new JPanel(new GridLayout(0,2));
panel.add(new JScrollPane(list));
panel.add(editor);

JFrame frame = new JFrame("Personen");
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame.add(panel);
frame.pack();
frame.setVisible(true);
return frame;
}


private void createPerson() {
Person person = new Person(name.getText(), firstName.getText());
persons.add(person);
}
}
[/code]

Das PersonListModel dient als Adapter, um eine java.util.List von Personen an z. B. eine JList anzubinden:
[code lang=Java title=PersonListModel.java]
import javax.swing.ListModel;
import javax.swing.AbstractListModel;
import java.util.List;
import java.util.Objects;

class PersonListModel extends AbstractListModel<Person> {

private List<Person> persons;

public PersonListModel(List<Person> persons) {
Objects.requireNonNull(persons);
this.persons = persons;
}

public void add(Person person) {
int ix = getSize();
if (persons.add(person)) {
fireIntervalAdded(this, ix, ix); // registrierte Beobachter (wie JList) benachrichtigen
}
}

@Override
public int getSize() {
return persons.size();
}

@Override
public Person getElementAt(int ix) {
return persons.get(ix);
}
}
[/code]
Die Implementierung ist ziemlich poplig und kein Hexenwerk. Die add-Methode ist allerdings nicht ganz korrekt, weil sie einfach davon ausgeht, dass neue Personen ans Ende angefügt werden. Da ich aber nur eine ArrayList verwenden werde, reicht mir das zu Demonstrationszwecken.

Was fehlt noch? Ach so, das Zusammenstellen zu einer Anwendung:

[code lang=Java title=App.java]
import java.awt.event.*;
import java.util.*;
import javax.swing.*;

public class App {
private List<Person> persons = new ArrayList<>();

public static void main(String[] args) {
SwingUtilities.invokeLater(() -> new App().show());
}

public App() {
// ein wenig Vorbelegung
persons.add(new Person("Dampf", "Hans"));
persons.add(new Person("Bolika", "Anna"));
persons.add(new Person("Wurst", "Hans"));
persons.add(new Person("Baumeister", "Bob"));
}

public void show() {
PersonListModel personModel = new PersonListModel(persons);
PersonView view = new PersonView(personModel);
JFrame frame = view.show();

// zu Demonstrationszwecken, dass sich die ArrayList auch
// wirklich aendert, gebe ich beim Schliessen des Fensters
// einfach mal die Liste aus
frame.addWindowListener(new WindowAdapter() {
public void windowClosed(WindowEvent e) {
persons.forEach(System.out::println);
}
});
}
}
[/code]
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
F Swing ArrayList in JList anzeigen und Objekte auswählen AWT, Swing, JavaFX & SWT 2
D Swing ArrayList in Jlist/ List oder Array in JList/List AWT, Swing, JavaFX & SWT 5
S Swing JList, ArrayList + DefaultModel AWT, Swing, JavaFX & SWT 5
Ollek JList - neuer Eintrag in ArrayList dadurch keine Anzeige der Objekte AWT, Swing, JavaFX & SWT 18
C Swing ArrayList in jList AWT, Swing, JavaFX & SWT 3
G jList mit ArrayList füllen AWT, Swing, JavaFX & SWT 3
Linjutsu Den Inhalten aus einer ArrayList Bilder zuweisen (Kartenspiel) AWT, Swing, JavaFX & SWT 8
mrbody234 ArrayList<Message> in eine TableView visualisieren AWT, Swing, JavaFX & SWT 2
Encera ArrayList mit eigenen Objekten in JavaFX sortieren und ausgeben AWT, Swing, JavaFX & SWT 50
S ChoiceBox aus ArrayList per setValue() mit Wert belegen funktioniert nicht. AWT, Swing, JavaFX & SWT 0
W Clear Canvas und anschließendes neues Erstellen von Objekten auf Canvas aus ArrayList AWT, Swing, JavaFX & SWT 4
missy72 JavaFX ObservableList in einer ArrayList speichern. AWT, Swing, JavaFX & SWT 7
B ArrayList, Strings anzeigen AWT, Swing, JavaFX & SWT 1
S JavaFx - ausgewählte Rows in Arraylist (Tableview) AWT, Swing, JavaFX & SWT 4
A Swing Wie Daten in der Form speichern? Array oder ArrayList AWT, Swing, JavaFX & SWT 2
K Swing JComboBox mit ArrayList füllen AWT, Swing, JavaFX & SWT 4
GreenTeaYT Wie vergebe Ich den Jframe Title den Namen aus einem Element von der Arraylist ? AWT, Swing, JavaFX & SWT 4
B Klasse mit ArrayList AWT, Swing, JavaFX & SWT 1
I JTable dynamisch aus ArrayList befüllen AWT, Swing, JavaFX & SWT 3
ZoXlike Wie kann man ArrayList in JTabel einlesen? [WindowBuilder] AWT, Swing, JavaFX & SWT 1
E Eigenes TableModel für ArrayList<String[]> AWT, Swing, JavaFX & SWT 5
S ArrayList Problem AWT, Swing, JavaFX & SWT 3
T JTable dynamisch mit ArrayList AWT, Swing, JavaFX & SWT 2
T Swing Ausgabe aus ArrayList in Klasse1 in jTextArea in Klasse2 AWT, Swing, JavaFX & SWT 2
E Problem mit ArrayList AWT, Swing, JavaFX & SWT 7
P Auf gefüllte ArrayList zugreifen AWT, Swing, JavaFX & SWT 12
P ArrayList Rectangles2D AWT, Swing, JavaFX & SWT 29
O JComboBox mit ArrayList füllen AWT, Swing, JavaFX & SWT 3
D Probleme bei Übertrag von ArrayList in Jtable AWT, Swing, JavaFX & SWT 2
L AWT paint mit ArrayList und Iterator AWT, Swing, JavaFX & SWT 3
Z Swing JButton,JFrame, ArrayList & so weiter... AWT, Swing, JavaFX & SWT 20
C Swing NullPointerException beim Hinzufügen von Checkboxes in eine ArrayList AWT, Swing, JavaFX & SWT 5
G Swing Elemente aus Arraylist auf JFrame anzeigen AWT, Swing, JavaFX & SWT 9
S JTable - 2D ArrayList & Falsche Werte. AWT, Swing, JavaFX & SWT 3
Screen Fehler bei Get-Methode für ArrayList AWT, Swing, JavaFX & SWT 8
M Swing JTable soll auf ArrayList zugreifen AWT, Swing, JavaFX & SWT 8
B Swing JButtons in eine Arraylist<JButton> einfügen AWT, Swing, JavaFX & SWT 2
J Daten aus einer Textdatei in ArrayList holen AWT, Swing, JavaFX & SWT 9
J ArrayList Inhalt zählen AWT, Swing, JavaFX & SWT 53
J ArrayList Datensätze komplett löschen AWT, Swing, JavaFX & SWT 8
J ArrayList Datensätze auswerten AWT, Swing, JavaFX & SWT 10
Y Swing Aktualisieren eines JPanel mit ArrayList im TableLayout AWT, Swing, JavaFX & SWT 2
L ArrayList Wert löschen klappt nicht AWT, Swing, JavaFX & SWT 11
M ArrayList in 2D Array umfüllen AWT, Swing, JavaFX & SWT 9
C Swing ArrayList in JComboBox AWT, Swing, JavaFX & SWT 6
H ArrayList?! in Tabelle AWT, Swing, JavaFX & SWT 3
B ArrayList in JTable AWT, Swing, JavaFX & SWT 3
B ArrayList im JTextArea anzeigen lassen AWT, Swing, JavaFX & SWT 30
Ollek JTable - Tabelle füllen mit einer ArrayList AWT, Swing, JavaFX & SWT 22
T ArrayList aus KlasseA in KlasseB in JTextArea ausgeben AWT, Swing, JavaFX & SWT 12
KrokoDiehl EventListenerList vs. ArrayList AWT, Swing, JavaFX & SWT 3
I Swing JTree aus ArrayList<File> erzeugen AWT, Swing, JavaFX & SWT 15
Spot84 jtable mit checkboxnode dynamisch per arraylist füllen AWT, Swing, JavaFX & SWT 8
G Wie lasse ich einen Graphen zeichnen(mit einer ArrayList)? AWT, Swing, JavaFX & SWT 5
S Tree - ArrayList Zuordnung! AWT, Swing, JavaFX & SWT 13
nadal15 JTable und ArrayList - selected rows löschen AWT, Swing, JavaFX & SWT 6
G JTable - TableModel aus ArrayList AWT, Swing, JavaFX & SWT 8
QDog JComboBox updaten, ArrayList AWT, Swing, JavaFX & SWT 7
D JLabel's in einer ArrayList speichern? AWT, Swing, JavaFX & SWT 4
G datensätze aus der db in einer arraylist speicher und in gui AWT, Swing, JavaFX & SWT 4
G Aus Arraylist bestimmte Objekte wiedergegeben bekommen? AWT, Swing, JavaFX & SWT 7
L JTable und Daten aus einer ArrayList AWT, Swing, JavaFX & SWT 6
A Components in einer ArrayList aus anderer Klasse speichern AWT, Swing, JavaFX & SWT 8
S Anzahl ActionEvents (Strings in eine ArrayList einfügen) AWT, Swing, JavaFX & SWT 4
B Jlist füllen AWT, Swing, JavaFX & SWT 4
H JList.setEnabled(false) - Text soll nicht grau sein AWT, Swing, JavaFX & SWT 2
J Swing JList wird nicht angezeigt AWT, Swing, JavaFX & SWT 6
A Swing JList zu JTree AWT, Swing, JavaFX & SWT 11
G Eingabe in JTextField in Array speichern und in JList ausgeben AWT, Swing, JavaFX & SWT 7
cezary Choice, JComboBox oder JList AWT, Swing, JavaFX & SWT 5
J JList scrollen AWT, Swing, JavaFX & SWT 3
Neumi5694 Swing JList - Klick abfangen AWT, Swing, JavaFX & SWT 3
G Swing Swing Binding JList funktioniert nicht AWT, Swing, JavaFX & SWT 5
M Swing JList Auswahl-GUI-Konzept AWT, Swing, JavaFX & SWT 9
C JList: Bestimmte Objekte ausschließen AWT, Swing, JavaFX & SWT 1
F JList aktualisiert nicht AWT, Swing, JavaFX & SWT 24
F JList auffüllen aus Array von Instanzen AWT, Swing, JavaFX & SWT 4
F Event wenn Maus eine JList verlässt AWT, Swing, JavaFX & SWT 13
F JList bei Windowbuilder AWT, Swing, JavaFX & SWT 8
F JList zeigt keine Einträge mehr AWT, Swing, JavaFX & SWT 1
P JList erstellen AWT, Swing, JavaFX & SWT 4
G DefaultListModel für JList AWT, Swing, JavaFX & SWT 2
P Einer JList mit eigenem ListModel einen Eintrag hinzfügen AWT, Swing, JavaFX & SWT 5
P Übergeben von ListModel an nichtparametrisierte JList AWT, Swing, JavaFX & SWT 8
M Ein Element in mehreren JList selektieren AWT, Swing, JavaFX & SWT 5
J Swing Probleme mit ListSelectionListener(), Inhalte der JList werden gelöscht? AWT, Swing, JavaFX & SWT 6
Z Swing Variable eines Objekt aus Hashmap in JList anzeigen AWT, Swing, JavaFX & SWT 1
Nabbit Über JList kein JPopupMenu AWT, Swing, JavaFX & SWT 2
O Swing JList beim Klicken in der GUI erstellen AWT, Swing, JavaFX & SWT 6
C Swing JList zeigt keine neuen Einträge an AWT, Swing, JavaFX & SWT 1
B Swing Auf JList-Elemente aus einer anderen Klasse zugreifen AWT, Swing, JavaFX & SWT 1
T Generische Klasse in JList über DefaultListModel AWT, Swing, JavaFX & SWT 1
T Swing WindowBuilder: JList wird nicht angezeigt AWT, Swing, JavaFX & SWT 2
C Button Text in JList neue Zeile AWT, Swing, JavaFX & SWT 6
C Hilfe bei JSpinner und JList AWT, Swing, JavaFX & SWT 1
S JList ist leer, aber DefaultListModel hat die Daten? AWT, Swing, JavaFX & SWT 9
M JList wird angezeigt, JTable (DefaultTableModel) nicht AWT, Swing, JavaFX & SWT 7
H Swing JList/JTable mit JButton, JTextField, Image, JComboBox und JLable AWT, Swing, JavaFX & SWT 2
D Swing Jlist Größe während der Laufzeit verändern. AWT, Swing, JavaFX & SWT 11
Q JList Update Problem AWT, Swing, JavaFX & SWT 1

Ähnliche Java Themen

Neue Themen


Oben