Hallo zusammen,
ich weiss, dass es haufenweise Themen/Tutorials/Links zu JTable gibt, allerdings hab ich relativ spezielle Probleme und hier keine Lösung dafür gefunden. Vielleicht kann mir ja von euch einer Helfen:
- Problem 1: Die Spaltennamen werden nicht angezeigt
Ich benutze eine JTable mit eigenem Model. Wenn ich die Tabelle erstelle, werden aber keine Spaltennamen angezeigt und ich verstehe nicht, warum. Die Spaltennamen werden als Stringarray übergeben und mit dem Konstruktor für das TableModel eingespeichert. Was muss ich noch tun, damit sie erscheinen?
Aufbau der Tabelle:
zb.length, sa.length sind nicht 0, columnNames enthält ausschließlich Strings. Er baut die Tabelle auch richtig auf, es fehlen einfach nur die Spaltenbezeichnungen. Hier noch meine Klasse RVTableModelBestand:
Hat jemand eine Ahnung, was ich da ändern müsste, damit die Spalten-Header angezeigt werden?
- Problem 2:
Es geht um die selbe Tabelle. Alle durch Benutzereingabe überschreibbaren Daten sind Integer. Wenn man etwas anderes als einen Integer in die Tabelle einträgt, wird die entsprechende Zelle auch rot markiert. Das geschieht alles ohne mein Zutun (sind irgendwelche Default-Settings für die JTable nehme ich an). Wie kann ich an genau dieser Stelle einwirken? (Ich hätte gerne sofort eine Fehlermeldung, wenn ein Wert eingetragen wird, der nicht Integer ist. Die rote Markierung reicht mir nicht, da es immernoch möglich ist, fehlerhafte Daten abzuspeichern)[/code]
ich weiss, dass es haufenweise Themen/Tutorials/Links zu JTable gibt, allerdings hab ich relativ spezielle Probleme und hier keine Lösung dafür gefunden. Vielleicht kann mir ja von euch einer Helfen:
- Problem 1: Die Spaltennamen werden nicht angezeigt
Ich benutze eine JTable mit eigenem Model. Wenn ich die Tabelle erstelle, werden aber keine Spaltennamen angezeigt und ich verstehe nicht, warum. Die Spaltennamen werden als Stringarray übergeben und mit dem Konstruktor für das TableModel eingespeichert. Was muss ich noch tun, damit sie erscheinen?
Aufbau der Tabelle:
Code:
JTable bestand = new JTable(new RVTableModelBestand(zb.length,sa.length+1, columnNames));
zb.length, sa.length sind nicht 0, columnNames enthält ausschließlich Strings. Er baut die Tabelle auch richtig auf, es fehlen einfach nur die Spaltenbezeichnungen. Hier noch meine Klasse RVTableModelBestand:
Code:
import javax.swing.table.*;
public class RVTableModelBestand extends AbstractTableModel{
private String[] columnNames;
private Object[][] data;
//Mein Konstruktor:
public RVTableModelBestand(int row, int col, String[] colnam){
data = new Object[row][col];
columnNames = colnam;
}
public int getColumnCount(){
return columnNames.length;
}
public int getRowCount(){
return data.length;
}
public String getColumnName(int col){
return columnNames[col];
}
public Object getValueAt(int row, int col){
return data[row][col];
}
public Class getColumnClass(int c){
if (getValueAt(0,c)!=null){
return getValueAt(0, c).getClass();
}
else if (getValueAt(1,c)!=null){
return getValueAt(1,c).getClass();
}
else { return "String".getClass(); }
}
public boolean isCellEditable(int row, int col){
if (col > 0 && row >= 0){
return true;
}
else {
return false;
}
}
public void setValueAt(Object value, int row, int col){
data[row][col] = value;
}
}
Hat jemand eine Ahnung, was ich da ändern müsste, damit die Spalten-Header angezeigt werden?
- Problem 2:
Es geht um die selbe Tabelle. Alle durch Benutzereingabe überschreibbaren Daten sind Integer. Wenn man etwas anderes als einen Integer in die Tabelle einträgt, wird die entsprechende Zelle auch rot markiert. Das geschieht alles ohne mein Zutun (sind irgendwelche Default-Settings für die JTable nehme ich an). Wie kann ich an genau dieser Stelle einwirken? (Ich hätte gerne sofort eine Fehlermeldung, wenn ein Wert eingetragen wird, der nicht Integer ist. Die rote Markierung reicht mir nicht, da es immernoch möglich ist, fehlerhafte Daten abzuspeichern)[/code]