Hallo,
ich möchte einem DefaultListModel() eigene Objekte hinzufügen, und diese bei Auswahl weiter verarbeiten können.
Ich lasse die Liste als JList in meinem Fenster anzeigen.
Meine Frage ist: wie kann ich nur eine bestimmte Eigenschaft (also ein Memberfeld) der Objekte in der Liste anzeigen? UND dabei das Objekt selbst an Ort und stelle behalten?
Ich weiß nur, wie ich zb ein String-Feld des Objekts in der Liste darstellen kann. Folglich ist in der Liste aber dann auch nur ein String drin, und nicht mehr das Objekt.
Habe hier versucht exemplarisch (und unvollständig) alles mir wichtig erscheinende als Code darzustellen:
Eigentlich möchte ich mit getElementAt aber das Objekt selbst bzw die Objektreferenz erhalten, um mit diesem Objekt weiter zu arbeiten: ein neues Fenster erzeugen, und erst dort alle Membervariablen auslesen und darstellen.
Vl denk ich auch zu kompliziert und es ist eigentlich ganz einfach? :rtfm:
Danke
ich möchte einem DefaultListModel() eigene Objekte hinzufügen, und diese bei Auswahl weiter verarbeiten können.
Ich lasse die Liste als JList in meinem Fenster anzeigen.
Meine Frage ist: wie kann ich nur eine bestimmte Eigenschaft (also ein Memberfeld) der Objekte in der Liste anzeigen? UND dabei das Objekt selbst an Ort und stelle behalten?
Ich weiß nur, wie ich zb ein String-Feld des Objekts in der Liste darstellen kann. Folglich ist in der Liste aber dann auch nur ein String drin, und nicht mehr das Objekt.
Habe hier versucht exemplarisch (und unvollständig) alles mir wichtig erscheinende als Code darzustellen:
Java:
public class Auto {
private int kilometer;
private String farbe;
//konstruktor, getter, setter
}
public class MyAutoModel {
private ArrayList<Auto> autoListe = new ArrayList<>();
public myAutoModel() {
Auto astra = new Auto(30000, "rot");
autoListe.add(astra);
}
//getter: getArrayList()...
}
public class MyAutoView {
private MyAutoModel model;
private DefaultListModel myList;
public MyAutoView(MyAutoModel model) {
this.model = model;
initComponents();
}
private void initComponents() {
myList = new DefaultListModel();
//GUI...
button.setText("open this object");
button.addActionListener(new ActionListener() {
public void buttonClickActionPerformed(ActionEvent evt) {
openActionPerformed(evt);
}
}
private void buttonClickActionPerformed(ActionEvent evt) {
for (int i = 0; i < model.getArrayList().size(); i++) {
myList.addElement(model.getArrayList().get(i).getFarbe());
}
}
//hier würde ich nun die Farbe ausgegeben bekommen
System.out.println(myList.getElementAt(0));
}
Eigentlich möchte ich mit getElementAt aber das Objekt selbst bzw die Objektreferenz erhalten, um mit diesem Objekt weiter zu arbeiten: ein neues Fenster erzeugen, und erst dort alle Membervariablen auslesen und darstellen.
Vl denk ich auch zu kompliziert und es ist eigentlich ganz einfach? :rtfm:
Danke
Zuletzt bearbeitet: