Was ist der einfachste Weg, um den Inhalt einer Arraylist von Objekten in einem JTable angezeigt werden?

StackOverflow https://stackoverflow.com/questions/623690

  •  05-07-2019
  •  | 
  •  

Frage

Ich habe eine Arraylist von Track-Objekten. Jeder Track Objekt hat die folgenden Felder (alle Strings):

URL, Titel, Autor, Album, Genre, Komponist

Ich möchte diese Spuren in einer JTable angezeigt werden, wobei jede Reihe eine Instanz eines Spurobjekt ist und jede Spalte eine der Eigenschaften eines Spurobjekt enthält.

Wie kann ich diese Daten zeigen eine JTable verwenden? Ich habe ein Abstract verwendet, die den getValueAt () -Methode korrekt implementiert. Noch nicht, ich etwas auf dem Bildschirm sehen.

Oder ist es einfacher, nur Arrays zu benutzen?

War es hilfreich?

Lösung

Um Inhalte hinzuzufügen, auf einem JTable , verwendet man die TableModel hinzufügen Einträge anzuzeigen.

Ein eine Art und Weise eine Reihe von Daten an den DefaultTableModel hinzuzufügen, ist mit dem addRow Methode, die ein Array von Objects nehmen, die die Objekte in der Reihe darstellt. Da es keine Methoden, um direkt Inhalte aus einem ArrayList hinzufügen, kann man eine Reihe von Objects erstellen, indem Sie den Inhalt der ArrayList erreichbar.

Im folgenden Beispiel wird eine KeyValuePair Klasse, die einen Halter für Daten (ähnlich Ihrer Track Klasse) ist, die verwendet wird, um eine DefaultTableModel eine Tabelle als JTable angezeigt werden:

class KeyValuePair
{
    public String key;
    public String value;

    public KeyValuePair(String k, String v)
    {
        key = k;
        value = v;
    }
}

// ArrayList containing the data to display in the table.
ArrayList<KeyValuePair> list = new ArrayList<KeyValuePair>();
list.add(new KeyValuePair("Foo1", "Bar1"));
list.add(new KeyValuePair("Foo2", "Bar2"));
list.add(new KeyValuePair("Foo3", "Bar3"));

// Instantiate JTable and DefaultTableModel, and set it as the
// TableModel for the JTable.
JTable table = new JTable();
DefaultTableModel model = new DefaultTableModel();
table.setModel(model);
model.setColumnIdentifiers(new String[] {"Key", "Value"});

// Populate the JTable (TableModel) with data from ArrayList
for (KeyValuePair p : list)
{
    model.addRow(new String[] {p.key, p.value});
}

Andere Tipps

dann, das Problem, das ich habe ist, dass ich überhaupt das Problem nicht sehen kann. hier ist der Code, den ich verwendet habe, um die Schnittstelle zu machen:

public Interface(){

    setSize(1024, 768);
    setBackground(new Color(0,0,0));
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    add(new MenuBar());//simple JMenuBar implementation

    table= new JTable();
    table.setPreferredScrollableViewportSize(new Dimension(500, 500));

    JScrollPane jsp = new JScrollPane(table);
    add(jsp);

    pack();
    setVisible(true);
}

Nachdem dieser Code ausgeführt wird, ich habe Code in einer anderen Klasse, die dies oft tut:

((DefaultTableModel)mainInterface.table.getModel()).addRow(
new String[] {t.location,t.title,t.creator,t.album,t.genre,t.composer});

t ist ein Track-Objekt durch die Art und Weise.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top