Hi,
entschuldigt schonmal vorweg die Anfängerfrage, aber ich komm grad absolut nicht weiter und rauf mir ehr grad die Haare aus
ich möchte aus einer HSQL Datenbank aus verschiedenen Tabellen Informationen beziehen und diese in einer Tabelle anzeigen lassen. Das ganze soll am Ende auch noch korrekt sortierbar sein (hier hatte ich früher ein Problem das alles nach String sortiert wurde, auch Spalten mit Zahlen drin, lag aber daran das die komplette Tabelle als String ausgelsen wurde und an das TabellenModel übergeben wurde, ich hoffe mit vectoren kann man das beheben).
Problem 1: Im laufenden Betrieb kommen später immer wieder neue Daten in die Datenbank, diese sollen dann auch der Tabelle hinzugefügt werden. (Also dachte ich hier an irgendeine Methode die ich später über einen Thread aufrufe)
Problem 2: Ich möchte dem Benutzer die Möglichkeit bieten das er vorher auswählen kann welche Spalten aus welchen Tabellen(Datenbanktabellen) angezeigt werden. Das hab ich über ein Optionsmenü gemacht, das funzt auch soweit. Nur muss das ganze halt auch in die Tabelle mit eingebaut werden.
So ein bischen wie ich das aufbaue hab ich im Thread (http://www.java-forum.org/de/viewtopic.php?t=69186&highlight=addrow) angeschaut, allerdings werd ich aus einigen Sachen nicht ganz schlau (programmiere noch nicht so lange mit Java) und dort sind die Spalten fix, wärend sie bei mir ja variabel sein sollen.
Quellcode dazu:
Vielen Dank schonmal für eure Hilfe.
entschuldigt schonmal vorweg die Anfängerfrage, aber ich komm grad absolut nicht weiter und rauf mir ehr grad die Haare aus
ich möchte aus einer HSQL Datenbank aus verschiedenen Tabellen Informationen beziehen und diese in einer Tabelle anzeigen lassen. Das ganze soll am Ende auch noch korrekt sortierbar sein (hier hatte ich früher ein Problem das alles nach String sortiert wurde, auch Spalten mit Zahlen drin, lag aber daran das die komplette Tabelle als String ausgelsen wurde und an das TabellenModel übergeben wurde, ich hoffe mit vectoren kann man das beheben).
Problem 1: Im laufenden Betrieb kommen später immer wieder neue Daten in die Datenbank, diese sollen dann auch der Tabelle hinzugefügt werden. (Also dachte ich hier an irgendeine Methode die ich später über einen Thread aufrufe)
Problem 2: Ich möchte dem Benutzer die Möglichkeit bieten das er vorher auswählen kann welche Spalten aus welchen Tabellen(Datenbanktabellen) angezeigt werden. Das hab ich über ein Optionsmenü gemacht, das funzt auch soweit. Nur muss das ganze halt auch in die Tabelle mit eingebaut werden.
So ein bischen wie ich das aufbaue hab ich im Thread (http://www.java-forum.org/de/viewtopic.php?t=69186&highlight=addrow) angeschaut, allerdings werd ich aus einigen Sachen nicht ganz schlau (programmiere noch nicht so lange mit Java) und dort sind die Spalten fix, wärend sie bei mir ja variabel sein sollen.
Quellcode dazu:
Code:
import java.io.BufferedInputStream;
import java.io.DataInputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Vector;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;
import javax.swing.table.TableRowSorter;
public class TabelleDaten extends Daten
{
private TableModel TabellenModel;
private JTable Tabelle;
private TableRowSorter<TableModel> TabellenSorter;
public TabelleDaten()
{
boolean FrameID = false, Security = false, Pending = false;
Vector columnNames = new Vector();
try
{
DataInputStream in = new DataInputStream(new BufferedInputStream(new FileInputStream("analyzer.ini")));
if(in.readBoolean()){
FrameID = true;
// Bei der Beschriftung der Spalten dachte ich erst daran die Beschriftung aus der Datenbank mit auszulesen, aber zum Testen reicht das auch so.
String Besch = "FrameID";
columnNames.add(Besch);
}
if(in.readBoolean()){
Security = true;
columnNames.add("Security");
}
if(in.readBoolean()){
Pending = true;
columnNames.add("Pending");
}
in.close();
}
catch (IOException e)
{
System.err.println(e.toString());
}
Vector rowData = createRow(FrameID, Security, Pending);
//an der stelle bricht er mir dann (laut debuger) ab, warum weiß ich nicht
TabellenModel = new DefaultTableModel(rowData, columnNames);
// Die JTable initialisieren
Tabelle = new JTable(TabellenModel);
// Der TableRowSorter wird die Daten des Models sortieren
TabellenSorter = new TableRowSorter<TableModel>(TabellenModel);
// Der Sorter muss dem JTable bekannt sein
Tabelle.setRowSorter(TabellenSorter);
// ... und der Sorter muss wissen, welche Daten er sortieren muss
TabellenSorter.setModel(TabellenModel);
}
public Vector createRow(boolean FrameID, boolean Security, boolean Pending)
{
Vector Zeile = new Vector();
if(FrameID)
{
//getZelle("MAC", "1", "FRAMEID", 2) -> liefert einen String aus einer Datenbanktabelle (Mac: Tabellenname; 1: Zeile, FRAMEID: Spalte) Die 2 hinten dran ist unwichtig.
//die "1" muss ich später noch variabel machen, um auf verschiedene Zeilen zugreifen zu können. aber selbst der Test mit einer zeile funktioniert nicht :(
Zeile.add(getZelle("MAC", "1", "FRAMEID", 2));
}
if(Security)
{
Zeile.add(getZelle("MAC", "1", "SECURITY", 2));
}
if(Pending)
{
Zeile.add(getZelle("MAC", "1", "PENDING", 2));
}
return Zeile;
}
public JTable getTabelle()
{
return Tabelle;
}
}
Vielen Dank schonmal für eure Hilfe.