Tenho um TableModel. Eu quero utilizar para criar os Dados da tabela, o contrutor da superClasse DefaultTableModel (String[], int), mas nao consigo pegar um array de String[][] de volta. tem como ?
pode ser Object[][] tambem…
Codigo abaixo !
package TableModel;
import javax.swing.table.DefaultTableModel;
import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener;
import javax.swing.table.TableModel;
public class MyTableModel extends DefaultTableModel implements TableModelListener {
private String[] columnNames;
private String[][] data;
public MyTableModel(String[] colNames, int row)
{
columnNames = colNames;
super.setRowCount(row);
data = super.getDataVector();// so tem este jeito de pegar os dados de volta ? por que preciso deles como um String[][]. e nao queria usar um for.
}
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) {
return getValueAt(0, c).getClass();
}
public boolean isCellEditable(int row, int col) {
return true;
}
public void setValueAt(Object value, int row, int col) {
data[row][col] = value;
fireTableCellUpdated(row, col);
}
public void tableChanged(TableModelEvent e) {
// TODO Auto-generated method stub
int row = e.getFirstRow();
int column = e.getColumn();
TableModel model = (TableModel)e.getSource();
String columnName = model.getColumnName(column);
Object data = model.getValueAt(row, column);
}
}
você tme que extender a abstractTableModel
e pra pega por exemplo a String[][] data
é só criar um metodo que te retorne data
consegui fazer mas agora tem outro problema…
esse tableModel e para que eu consiga mudar a cor pra vermelho das celulas da minha tabela que tenham valor igual a “1”(String mesmo).
meu problema e o seguinte:
Fiz o programa todo com o DefaultTableModel agora preciso colorir as celulas e o DefaultTableModel, nao deixa fazer isso e estou tentando fazer um TableModel, TableRenderer etc… para fazer isso mas estou totalmente perdido, ja li varios tutoriais mas nao consigo fazer funcionar, ate o da SUN eu ja li umas 10x.
da uma olhada.
e nao consigo entender como fazer o ColorCellRenderer…
package TableModel;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.DefaultTableModel;
import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener;
import javax.swing.table.TableModel;
public class MyTableModel extends AbstractTableModel /*implements TableModelListener*/ {
private String[] columnNames;
private Object[][] data;
public MyTableModel(String[] colNames, int row)
{
super();
columnNames = colNames;
data = new Object[row][columnNames.length];
}
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) {
return getValueAt(0, c).getClass();
}
public boolean isCellEditable(int row, int col) {
return true;
}
public void setValueAt(Object value, int row, int col) {
data[row][col] = value;
fireTableCellUpdated(row, col);
}
/*public void tableChanged(TableModelEvent e) {
// TODO Auto-generated method stub
int row = e.getFirstRow();
int column = e.getColumn();
TableModel model = (TableModel)e.getSource();
String columnName = model.getColumnName(column);
Object data = model.getValueAt(row, column);
}*/
}
quando eu compilo tenho o seguinte erro.
java.lang.NullPointerException
at TableModel.MyTableModel.getColumnClass(MyTableModel.java:40)
at javax.swing.JTable.getColumnClass(Unknown Source)
...
JTable e um Inferno… nossa senhora. to apanhando demais desse negocio de TableRenderer, TableModel, etc…