J
javadarter
Gast
Hallo,
ich habe leider ein problem mit meiner jtable.
ich will eine jtable erzeugen, bei welcher in jeder zelle 3 zeilen vorhanden sind. nun habe ich unter
Galileo Computing :: Java ist auch eine Insel (8. Auflage) – 16.18 Tabellen (JTable)
bei
jtable -> Ein eigener Renderer für Tabellen -> mehrzeilige tabellenzellen
gelesen, wie man dies realisieren kann.
also habe ich mir auch einen CellRenderer gebastelt, der von JTextArea erbt und TableCellRenderer implementiert.
sobald ich mir jedoch meine Jtable erzeuge (auch eine von JTable umgeschriebene klasse) und dieser mit
jt.setDefaultRenderer(Object.class, new MyCellRenderer());
meinen CellRenderer übergebe, gibt es eine NullpointerException
hier mein code:
MyCellRenderer:
MyTable:
Erzeugung der JTable mit den geänderten Zellen:
tableHeader() und tableValues() sind Methoden, die einen Vektor zurückliefern.
es soll hier eine Jtable mit bestimmter statischer anzahl an Zeilen und Spalten (11,7) entstehen, in welcher werte reingeschrieben werden und in welcher keine zellen editiert werden können. diese tabelle soll nur zur anzeige dienen. die dreizeilige zelle war eine meiner vorgaben für das aussehen der tabelle.
es könnte auch sein, dass es an meine MyTable-klasse liegt, dass es nicht funktioniert.
ich würde mich sehr freuen, wenn mir jemand weiterhelfen kann.
mfg,
javadarter
ich habe leider ein problem mit meiner jtable.
ich will eine jtable erzeugen, bei welcher in jeder zelle 3 zeilen vorhanden sind. nun habe ich unter
Galileo Computing :: Java ist auch eine Insel (8. Auflage) – 16.18 Tabellen (JTable)
bei
jtable -> Ein eigener Renderer für Tabellen -> mehrzeilige tabellenzellen
gelesen, wie man dies realisieren kann.
also habe ich mir auch einen CellRenderer gebastelt, der von JTextArea erbt und TableCellRenderer implementiert.
sobald ich mir jedoch meine Jtable erzeuge (auch eine von JTable umgeschriebene klasse) und dieser mit
jt.setDefaultRenderer(Object.class, new MyCellRenderer());
meinen CellRenderer übergebe, gibt es eine NullpointerException
hier mein code:
MyCellRenderer:
Java:
class MyCellRenderer extends JTextArea implements TableCellRenderer{
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected,
boolean hasFocus, int row, int column) {
setText( value.toString() ); // Value kann String mit \n enthalten
return this;
}
}
MyTable:
Java:
public class MyTableModel extends DefaultTableModel implements Serializable,TableModel{
public MyTableModel(Vector values, Vector header) {
}
public MyTableModel(int columns, int rows) {
}
@Override
public boolean isCellEditable(int row, int column) {
return false;
}
@Override
public int getRowCount() {
return 11;
}
@Override
public int getColumnCount() {
return 7;
}
}
Erzeugung der JTable mit den geänderten Zellen:
Java:
MyTableModel tm= new MyTableModel(tableValues(),tableHeader());
JTable jt=new JTable(tm);
jt.setDefaultRenderer(Object.class, new MyCellRenderer()); // <= wegen dieser zeile wird
// die NullPointerException aufgerufen
jt.setValueAt("ß\nvß\nRiwi t", 0, 1); // <= hier soll beispielsweise dieser
// dreizeilige text in die zelle geschrieben werden
jt.setFocusable(false);
jt.setRowHeight(53);
jt.setAutoResizeMode(MAXIMIZED_BOTH);
jt.setColumnSelectionAllowed(false);
jt.setRowSelectionAllowed(false);
jt.setTableHeader(null);
JScrollPane jsp=new JScrollPane(jt);
this.add(jsp);
tableHeader() und tableValues() sind Methoden, die einen Vektor zurückliefern.
es soll hier eine Jtable mit bestimmter statischer anzahl an Zeilen und Spalten (11,7) entstehen, in welcher werte reingeschrieben werden und in welcher keine zellen editiert werden können. diese tabelle soll nur zur anzeige dienen. die dreizeilige zelle war eine meiner vorgaben für das aussehen der tabelle.
es könnte auch sein, dass es an meine MyTable-klasse liegt, dass es nicht funktioniert.
ich würde mich sehr freuen, wenn mir jemand weiterhelfen kann.
mfg,
javadarter