jtable arraylist

thobren

Mitglied
Wie bekomme ich ein ArrayList in die JTable?
Hier mein Code/Methode

Java:
DataTable() throws SQLException { // Konstruktor
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
       
        ImageIcon img = new ImageIcon("TaskIcon.png");
        Image icon = Toolkit.getDefaultToolkit().getImage("TaskIcon.png");
        //JFrame.setIconImage(icon);
        //JFrame.setIconImage(img.getImage());
       
//        String[] titel = {"Datum", "Erledigt", "Aufgabe","Wiederholung","Prio"};
        String[] titel = {"Datum", "Erledigt", "Aufgabe","Wiederholung","Prio","Zeit"};
       
//        String [][] inhalt = { {"Beatles","Help","Test","x","1"},
//                {"Beatwatt","Is That All", "Test","x","2"} };
     
        ArrayList<TaskData> list =  DatabaseConnect.taskArrayList();
       
       JTable table = new JTable(inhalt, titel);
       add(new JScrollPane(table)); // ohne JScrollPane keine Titel!
             
       table.setFont(new Font("Verdana", Font.PLAIN, 14));
       setSize(400, 300);
       setVisible(true);
     
   }

Java:
 public static ArrayList<TaskData> taskArrayList() throws SQLException {
            Connection conn = null;
            Statement stmt = null;
            String url = "jdbc:sqlite:C:\\Privat\\sqlite\\SQLiteStudio\\DataTasks.db";
            try {
                conn = DriverManager.getConnection(url);
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            stmt = conn.createStatement();
            //ResultSet rs = stmt.executeQuery("SELECT * FROM TablDataTask;");
            ResultSet rs = stmt.executeQuery("SELECT ID, TaskDate, TaskData " +
                    " FROM TablDataTask " +
                    " WHERE TaskDate=(SELECT Max([TaskDate]) FROM TablDataTask)");
            
            System.out.println("ID\t Task\t ");
            ArrayList<TaskData> taskDataList = new ArrayList<TaskData>();
            while ( rs.next() ) {
                TaskData taskDataObj = new TaskData(); 
                taskDataObj.setId(rs.getInt("ID"));
                taskDataObj.setDate(rs.getString("TaskDate"));
                taskDataObj.setTask(rs.getString("TaskData"));
                
                taskDataList.add(taskDataObj);
                
                Integer id = rs.getInt("ID");
                String taskDate = rs.getString("TaskDate");
                String taskData = rs.getString("TaskData");
                  System.out.println(id+" \t "+taskDate +" \t "+taskData);
            }
            rs.close();
            
            return taskDataList;
        }
 

Oneixee5

Top Contributor
Um einer JTable Daten hinzuzufügen kann man ein TableModel verwenden:
Java:
DefaultTableModel tableModel = new DefaultTableModel(...);
JTable table = new JTable(tableModel);
Object[] objs = ...
tableModel.addRow(objs);
Man kann von TableModel auch eigene Klassen ableiten, welche eine ArrayList entgegen nehmen können.
 

Oneixee5

Top Contributor
[CODE lang="xml" title="pom.xml"]<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>playground</groupId>
<artifactId>playground.swing</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
</properties>

<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.5.4</version>
<relativePath />
</parent>

<dependencies>

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
</dependency>

</dependencies>

<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>

</project>[/CODE]
[CODE lang="java" title="Student.java"]package playground;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

@Entity
public class Student {

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
private String firstName;
private String name;

public Student() {
}

public Integer getId() {
return this.id;
}

public void setId(final Integer id) {
this.id = id;
}

public String getFirstName() {
return this.firstName;
}

public void setFirstName(final String firstName) {
this.firstName = firstName;
}

public String getName() {
return this.name;
}

public void setName(final String name) {
this.name = name;
}

@Override
public String toString() {
return "Student [id=" + this.id + ", firstName=" + this.firstName + ", name=" + this.name + "]";
}

}[/CODE]
[CODE lang="java" title="StudentRepository.java"]package playground;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface StudentRepository extends JpaRepository<Student, Integer> {
}[/CODE]
[CODE lang="java" title="StudentsTableModel.java"]package playground;

import java.util.List;

import javax.swing.table.AbstractTableModel;

public class StudentsTableModel extends AbstractTableModel {

private static final String[] COLUMNS = {"Vorname", "Name"};

private final List<Student> students;

public StudentsTableModel(final List<Student> students) {
this.students = students;
}

@Override
public String getColumnName(final int column) {
return COLUMNS[column];
}

@Override
public int getRowCount() {
return this.students.size();
}

@Override
public int getColumnCount() {
return COLUMNS.length;
}

@Override
public Object getValueAt(final int rowIndex, final int columnIndex) {
final Student student = this.students.get(rowIndex);
switch (columnIndex) {
case 0: {
return student.getFirstName();
}
case 1: {
return student.getName();
}
default:
throw new IllegalArgumentException("Unexpected value: " + columnIndex);
}
}

}
[/CODE]
[CODE lang="java" title="SwingApp.java"]package playground;

import java.awt.EventQueue;
import java.awt.FlowLayout;
import java.util.List;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.TableModel;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;

@SpringBootApplication
public class SwingApp extends JFrame implements CommandLineRunner {

@Autowired
private StudentRepository repo;

public SwingApp() {
}

private void initUI() {

final List<Student> students = this.repo.findAll();

createLayout(students);

setTitle("Playground");
setSize(470, 500);
setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}

private void createLayout(final List<Student> students) {
final var pane = getContentPane();
pane.setLayout(new FlowLayout());

final TableModel model = new StudentsTableModel(students);
final JTable table = new JTable(model);
pane.add(new JScrollPane(table));

final var closeButton = new JButton("Close");
closeButton.addActionListener(e -> {
System.exit(0);
});

pane.add(closeButton);
pane.doLayout();
}

@Override
public void run(final String... args) throws Exception {
// set up db
Student student = new Student();
student.setFirstName("Hans");
student.setName("Dampf");
this.repo.save(student);

student = new Student();
student.setFirstName("Horst");
student.setName("Heimlich");
this.repo.save(student);

initUI();
}

public static void main(final String[] args) {
final var ctx = new SpringApplicationBuilder(SwingApp.class).headless(false).run(args);
EventQueue.invokeLater(() -> {
final var ex = ctx.getBean(SwingApp.class);
ex.setVisible(true);
});
}

}[/CODE]
[CODE lang="java" title="application.properties"]spring.datasource.url=jdbc:h2:mem:playground
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
[/CODE]
1635439139280.png
1635439177287.png
 

Neumi5694

Top Contributor
Am Besten ist, du nimmst den Code des DefaultTableModels und ersetzt Vector durch ArrayList<ArrayList>.
Damit stellst du auch sicher, dass das Eventhandling dem Standard entspricht. So was hab ich mir für die Arbeit gebastelt.
 

Neumi5694

Top Contributor
o_O Warum nicht vernünftige Klassen verwenden?
String[] titel = {"Datum", "Erledigt", "Aufgabe","Wiederholung","Prio","Zeit"};
Das ist doch schon fast die Vorgabe für die Member einer Klasse.
Nein, die unvernünftigen Klassen sind mir lieber... Was ist denn eine vernünftige Klasse für eine Tabelle? Und wie unterscheidet man, was vernünftig ist und was nicht?

Das DefaultTableModel ist meiner Meinung nach absolute in Ordnung, nur eben verwendet es noch ein paar alte Klassen. Um nicht hin und her transformieren zu müssen, hab ich das Modell so abgeändert, dass es eben mit ArrayLists arbeiten kann. Von der neuen Klasse kann ich ja immer noch spezialisiert ableiten.
 

thobren

Mitglied
Vielen Dank für die Antworten.
Meine Memberclass sie so aus:

Java:
package PackageTasks;

public class TaskData {

    private String date;
    private String finished;
    private String task;
    private String repeat;
    private Integer prio;
    private Integer id;
    private Integer time;
    
    public Integer getTime() {
        return time;
    }
    public void setTime(Integer time) {
        this.time = time;
    }
    
    public Integer getId() {
        return id;
    }
    
    public void setId(Integer id) {
        this.id = id;
    }
    public String getDate() {
        return date;
    }
    public void setDate(String date) {
        this.date = date;
    }
    public String getFinished() {
        return finished;
    }
    public void setFinished(String finished) {
        this.finished = finished;
    }
    public String getTask() {
        return task;
    }
    public void setTask(String task) {
        this.task = task;
    }
    public String getRepeat() {
        return repeat;
    }
    public void setRepeat(String repeat) {
        this.repeat = repeat;
    }
    public Integer getPrio() {
        return prio;
    }
    public void setPrio(Integer prio) {
        this.prio = prio;
    }
    
}
 

thobren

Mitglied
In deiner Signatur betonst du extra, das du Umsteiger bist. Ich bin somit davon ausgegangen, dass Datenstrukturen und Abstraktion kein Problem darstellen.
Von PHP zu Java gibt es doch deutliche Unterschiede. Und will nicht copy and paste machen, sondern es auch verstehen. Grundkenntnissse in Java (Klassen und Methoden) sind ja vorhanden.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
J ArrayList wird in JTable falsch angezeigt Java Basics - Anfänger-Themen 0
X ArrayList to String[][] für JTable Java Basics - Anfänger-Themen 9
E GUI JTable und ArrayList Java Basics - Anfänger-Themen 3
S JTable aus ArrayList füllen Java Basics - Anfänger-Themen 5
richis-fragen JTable den angezeigten WERT nicht den Wert aus dem Model ausgeben. Java Basics - Anfänger-Themen 3
richis-fragen JTable Header ausgeblendete (width = 0) nicht per mouseDragged aufziehen. Java Basics - Anfänger-Themen 9
richis-fragen JTable sowohl Spaltennamen wie auch Spaltenbeschriftungen Java Basics - Anfänger-Themen 7
richis-fragen JTable effektiv angezeigter Text ausgeben nicht Inhalt vom Model Java Basics - Anfänger-Themen 9
G JTable Listselectionlistener friert das Programm ein Java Basics - Anfänger-Themen 8
Mady Daten von JList & Combobox in JTable adden Java Basics - Anfänger-Themen 2
W Liste mit Listen in JTable darstellen Java Basics - Anfänger-Themen 1
J Zelleninhalt einer Jtable löschen Java Basics - Anfänger-Themen 2
E JTable einzelne Zelle färben Java Basics - Anfänger-Themen 2
thobren JTable Icon Java Basics - Anfänger-Themen 1
R Compiler-Fehler JTable mit XML befüllen | The constructor JTable(Object[], String[]) is undefined Java Basics - Anfänger-Themen 10
H Kapselung JProgressBar in JTable, aber getValueAt() greift nicht Java Basics - Anfänger-Themen 7
G JTable, Zeile auswählen und Ergebnis an Schaltfläche übergeben Java Basics - Anfänger-Themen 4
J Jtable Eingabe nach Klick ausserhalb der Tabelle übernehmen Java Basics - Anfänger-Themen 6
J JTable Spalteninhalt löschen Java Basics - Anfänger-Themen 1
J JTable Titel wird nicht angezeigt Java Basics - Anfänger-Themen 6
B jTable Spalte summieren Java Basics - Anfänger-Themen 7
N JTable auslesen Java Basics - Anfänger-Themen 6
O JTable in Excel mit Farben Java Basics - Anfänger-Themen 8
O Kommentar auf JTable Zelle Java Basics - Anfänger-Themen 2
M Jtable Reenderer Java Basics - Anfänger-Themen 0
O Popoup Menü im JTable richtig anzeigen Java Basics - Anfänger-Themen 6
M Jtable änderung updaten Java Basics - Anfänger-Themen 2
O JTable Suchfunktion Java Basics - Anfänger-Themen 2
M jTable bekommt null Java Basics - Anfänger-Themen 1
M JTable an andere Klasse übergeben Java Basics - Anfänger-Themen 2
M Datenbank in jTable Laden Java Basics - Anfänger-Themen 49
M Klasse in JTable einfügen Java Basics - Anfänger-Themen 7
S JTable Java Basics - Anfänger-Themen 16
S JTable mit Daten füllen Java Basics - Anfänger-Themen 7
L JTable Tagebuch Spaltenhöhe verändern Java Basics - Anfänger-Themen 3
S JTable - Filter an anderen Colums Java Basics - Anfänger-Themen 2
R JTable Suchfunktion mit SQL Daten Java Basics - Anfänger-Themen 2
C JTable update mit MySQL Datenbank Java Basics - Anfänger-Themen 1
C Best Practice JTable in MVC Pattern Java Basics - Anfänger-Themen 7
J Daten einer Textdatei in ein JTable importieren. Java Basics - Anfänger-Themen 3
A zykl. Aktualisierne JTable Java Basics - Anfänger-Themen 9
C Endlosschleife bei füllen von Daten im JTable Java Basics - Anfänger-Themen 5
C Werte aus JTable auslesen Java Basics - Anfänger-Themen 4
A Probleme beim zykl. aktulisieren von Daten in JTable Java Basics - Anfänger-Themen 3
V JTable welcher Listener ? Java Basics - Anfänger-Themen 7
D Falsche Zeile wird in JTable gelöscht Java Basics - Anfänger-Themen 6
D MySQL Abfrage in JTable speichern Java Basics - Anfänger-Themen 43
D JTable Zeile wird nicht in MySQL gelöscht Java Basics - Anfänger-Themen 16
D JTable Zeilen löschen Java Basics - Anfänger-Themen 5
C Klassen JTable wird ohne Header aufgebaut Java Basics - Anfänger-Themen 6
K (JTable) Text einer Zelle auf der linken Seite kürzel Java Basics - Anfänger-Themen 2
B Kniffel JTable Java Basics - Anfänger-Themen 5
N JTable flackert Java Basics - Anfänger-Themen 8
T JTable Daten aus txt datei Java Basics - Anfänger-Themen 3
J Eintragen von Personen in JTable Java Basics - Anfänger-Themen 4
X JTable mit grünen und roten Punkten Java Basics - Anfänger-Themen 2
LexeB4F DEL --> JTable Zelleninhalt Java Basics - Anfänger-Themen 3
R JTable Auslesen Java Basics - Anfänger-Themen 1
Crazynet jTable erste Zeile mit deffinierten Werten Java Basics - Anfänger-Themen 0
K Collections Sortieren nach zweiter Spalte in JTable Java Basics - Anfänger-Themen 18
J JTable Wert gleich überschreiben Java Basics - Anfänger-Themen 6
S Zeile entfernen aus JTable Java Basics - Anfänger-Themen 15
S JTable clonen Java Basics - Anfänger-Themen 5
H Best Practice PDF JTable Java Basics - Anfänger-Themen 4
S In JTable Zeile selektieren mit Mausklick Java Basics - Anfänger-Themen 16
D JTable Probleme beim Sortieren von Zahlen. Java Basics - Anfänger-Themen 6
M JTable mit XML datei befüllen Java Basics - Anfänger-Themen 1
F Zeile bei JTable hinzufügen Java Basics - Anfänger-Themen 6
K JTable Bild einfügen Java Basics - Anfänger-Themen 1
M [JTable] getValue throws ArrayOutOfBoundException Java Basics - Anfänger-Themen 1
B JTable - Highlighter ??? Java Basics - Anfänger-Themen 3
S JTable LinkedList <Objekt> befüllen Java Basics - Anfänger-Themen 1
S JTable dynamisch mit Datenbankinhalten füllen Java Basics - Anfänger-Themen 6
W JTable mit einem JButton-Array füllen Java Basics - Anfänger-Themen 4
O JScrollPane zu gross für JTable Java Basics - Anfänger-Themen 2
L JTable Row selected -> fireTableDataChange do nothing. Java Basics - Anfänger-Themen 3
E JTable + TableModel updaten? Java Basics - Anfänger-Themen 1
O java.lang.IndexOutOfBoundsException JTable autoSort Java Basics - Anfänger-Themen 5
F JTable adding Row Java Basics - Anfänger-Themen 5
P jTable getColumnClass, mit unterschiedlichen Klassen in einer Column? Java Basics - Anfänger-Themen 5
M Eingabe in JTable bei Eingabe korrigieren Java Basics - Anfänger-Themen 2
Z jtable problem (das tausendste??) Java Basics - Anfänger-Themen 12
J JTable Java Basics - Anfänger-Themen 7
T JTable Java Basics - Anfänger-Themen 2
T JTable einzelne Zeilen löschen Java Basics - Anfänger-Themen 3
S Farbe eine Zeile in JTable ändern, wenn JButton geklickt wurd Java Basics - Anfänger-Themen 4
Uzi21 jTable / Inhalt speichern Java Basics - Anfänger-Themen 2
M Problem mit JTable und Model Java Basics - Anfänger-Themen 3
F Methoden JTable + 2 For-Schleifen Java Basics - Anfänger-Themen 4
C jtextfield und jtable Java Basics - Anfänger-Themen 34
X JTable mit Inhalten aus JTextField o.ä. füllen Java Basics - Anfänger-Themen 4
G JTable: SelectionListener Problem Java Basics - Anfänger-Themen 2
G JTable: Werte in Tabelle direkt ansprechen Java Basics - Anfänger-Themen 3
S Icons in JTable per ResultSet Java Basics - Anfänger-Themen 5
G Spalte in JTable unsichtbar machen, Zugriff auf Daten ermöglichen Java Basics - Anfänger-Themen 2
M Zelle von JTable mit Rahmen versehen Java Basics - Anfänger-Themen 4
G JTable: Inhalt einer selektierten Zeile speichern Java Basics - Anfänger-Themen 2
G JTable: mehrzeilige Zellen erstellen Java Basics - Anfänger-Themen 2
W Problem JTable Java Basics - Anfänger-Themen 5
M JTable wird nicht aktualisiert Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben