Moin, ich versuche gerade ein JTable zu füllen mit einer ArrayList. Bei meinem Programm ist es so, dass man immer gefragt wird, was eingegeben werden soll, das wird in der ArrayList gespeichert. In der ArrayList steht dann immer ein Name und eine Zeit. Aber wenn ich dann damit versuche das 2d Array für den Table zufüllen, werden bei mir natürlich immer die Daten überschrieben und es steht dann in der Tabelle immer das Gleiche. Das liegt daran, das im JDialog immer eine neue Tabelle aufgerufen wird, dadurch fängt das 2d Array immer von vorne an und speichert dann den neusten Wert an jeder Position. Vielleicht kann jemand mal ein Blick drüber werfen und mir Tipps geben.
[CODE lang="java" title="JDialog"]public class HighDialog extends JDialog {
public HighDialog(String name, int zeit) {
JTable table = new JTable(new Tabelle(name, zeit)); //hier wird immer der neue JTable aufgerufen
table.setSize(400, 400);
add(new JScrollPane(table));
table.setVisible(true);
setSize(500, 500);
}
}[/CODE]
[CODE lang="java" title="AbstractTableModel"]public class Tabelle extends AbstractTableModel {
private Highscore highscore = Highscore.getInstance(); //ist ein Singleton und die ArrayList
final String[] spaltenBeschriftung = { "Spielername", "Zeit" };
final Object[][] data = new Object[10][2]; //größe der Tabelle
public Tabelle(String name, int zeit) { //bekommt die Werte vom JDialog übergeben
highscore.add(new Score(name, zeit)); //hier wird die ArrayList gefüllt mit einem Score. Score besteht aus einem String spielername und int Sekunden
for (int i = 0; i < highscore.size(); i++) { //dadurch, dass das immer von 0 beginnt, werden die ersten Werte des Arrays data überschrieben
for (Score s : highscore) { //hier wird jeder Score von Highscore durchlaufen
data[0] = s.getSielername(); //spielername wird gespeichert
data[1] = s.getSekunden(); //zeit des spieler werden gespeichert
}
}
}
}[/CODE]
[CODE lang="java" title="JPanel"]//wenn mein Spiel gewonnen wurde, wird das durchgeführt
String name = JOptionPane.showInputDialog(this, "Name");
if (name != null) {
Highdialog dia = new HighDialog(name,zeit); //hier wird name und zeit dem Dialog übergeben,
//weil ich nicht wusste, wie sonst die Tabelle die Werte bekommt,
//damit die ArrayList gefüllt wird.
dia.setVisible(true);[/CODE]
Vielleicht hat jemand ein Tipp bzw. Verbesserungen.
Danke Zeppi
[CODE lang="java" title="JDialog"]public class HighDialog extends JDialog {
public HighDialog(String name, int zeit) {
JTable table = new JTable(new Tabelle(name, zeit)); //hier wird immer der neue JTable aufgerufen
table.setSize(400, 400);
add(new JScrollPane(table));
table.setVisible(true);
setSize(500, 500);
}
}[/CODE]
[CODE lang="java" title="AbstractTableModel"]public class Tabelle extends AbstractTableModel {
private Highscore highscore = Highscore.getInstance(); //ist ein Singleton und die ArrayList
final String[] spaltenBeschriftung = { "Spielername", "Zeit" };
final Object[][] data = new Object[10][2]; //größe der Tabelle
public Tabelle(String name, int zeit) { //bekommt die Werte vom JDialog übergeben
highscore.add(new Score(name, zeit)); //hier wird die ArrayList gefüllt mit einem Score. Score besteht aus einem String spielername und int Sekunden
for (int i = 0; i < highscore.size(); i++) { //dadurch, dass das immer von 0 beginnt, werden die ersten Werte des Arrays data überschrieben
for (Score s : highscore) { //hier wird jeder Score von Highscore durchlaufen
data[0] = s.getSielername(); //spielername wird gespeichert
data[1] = s.getSekunden(); //zeit des spieler werden gespeichert
}
}
}
}[/CODE]
[CODE lang="java" title="JPanel"]//wenn mein Spiel gewonnen wurde, wird das durchgeführt
String name = JOptionPane.showInputDialog(this, "Name");
if (name != null) {
Highdialog dia = new HighDialog(name,zeit); //hier wird name und zeit dem Dialog übergeben,
//weil ich nicht wusste, wie sonst die Tabelle die Werte bekommt,
//damit die ArrayList gefüllt wird.
dia.setVisible(true);[/CODE]
Vielleicht hat jemand ein Tipp bzw. Verbesserungen.
Danke Zeppi