Problema com TableModel and DefaultTableColumnModel

3 respostas
U

porque System.err.println("["+rowIndex+"]["+columnIndex+"]"); imprime columnIndex = 0 ?

obrigado. segue o código:

import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.DefaultTableColumnModel;
import javax.swing.table.TableColumn;

public class TableTest {

/**
* @param args
*/
public static void main(String[] args) {

JFrame frame = new JFrame("Test JTable");
frame.setLayout(new FlowLayout());
frame.setSize(600, 400);
frame.setLocationRelativeTo(null);

MyTableModel tableModel = new MyTableModel();
MyColumnModel columnModel = new MyColumnModel();

final JTable table = new JTable(tableModel);
table.setColumnModel(columnModel);

JScrollPane scroll = new JScrollPane(table);
scroll.setPreferredSize(new Dimension(200,100));

JButton btn = new JButton("renovar");

frame.add(btn);

btn.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e) {
//I need change model.
table.setModel(new MyTableModel());
table.setColumnModel(new MyColumnModel());

}});

frame.add(scroll);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

}
class MyColumnModel extends DefaultTableColumnModel {

private static final long serialVersionUID = 1L;

public MyColumnModel() {

TableColumn column1 = new TableColumn();
column1.setHeaderValue("Nome");
TableColumn column2 = new TableColumn();
column2.setHeaderValue("Sobre nome");
TableColumn column3 = new TableColumn();
column3.setHeaderValue("Idade");

addColumn(column1);
addColumn(column2);
addColumn(column3);
}

}

class MyTableModel extends AbstractTableModel {

private static final long serialVersionUID = 1L;

public MyTableModel(){}

public int getRowCount() {
return 5;
}


public Object getValueAt(int rowIndex, int columnIndex) {
System.err.println("["+rowIndex+"]["+columnIndex+"]");
return "Alex";
}

public int getColumnCount() {
return 5;
}

public boolean isCellEditable(int rowIndex, int columnIndex) {
return true;
}

}

3 Respostas

T

Tanto as linhas quanto as colunas começam por 0. A linha -1 é o cabeçalho.

U

certo, mais ele sempre retorna 0. executa o código vc vai entender melhor

ViniGodoy

Você precisa definir o valor de ModelIndex do seu TableColumn.

TableColumn column1 = new TableColumn(); column1.setHeaderValue("Nome"); column1.setModelIndex(0); TableColumn column2 = new TableColumn(); column2.setHeaderValue("Sobre nome"); column2.setModelIndex(1); TableColumn column3 = new TableColumn(); column3.setHeaderValue("Idade"); column3.setModelIndex(2);

Criado 13 de dezembro de 2006
Ultima resposta 13 de dez. de 2006
Respostas 3
Participantes 3