Tenho uma JTable à qual agreguei o DefaultTableModel, porque é só ele que sei usar… Tentei criar o meu próprio modelo mas deu uns problemas e não consegui… Enfim, uso o DefaultTableModel, e preciso determinar o tamanho de cada coluna, preciso saber como fazer para quando o usuário clicar duas vezes sobre uma linha da JTable os valores das celulas daquela linha sejam copiados e lançados à JTextField’s…
Lembre-se, não quero usar AbstractTableModel e talz, preciso saber como fazer isso com DefaultTableModel…
Se alguém conseguir fazer isso e puder me dizer, ficarei intensamente grato!
O Model contém os dados de sua tabela.
O TableColumnModel é um modelo que descreve as colunas para sua tabela.
O JTable possui as informações de desenho da sua tabela, e também captura a interação do usuário com a tabela.
Então, você não vai conseguir obter o tamanho das colunas nem no Abstract e nem no DefaultTableModel.
Eu acho que você realmente deveria voltar a estudar o AbstractTableModel e deixar de lado o Default. É um investimento que realmente vale a pena.
Mas, respondendo as suas perguntas. Para saber o tamanho das colunas, você deve perguntar ao JTable:
table.getColumn("UserName").getWidth();
Esse nome “UserName” é o identifier de sua coluna. Você pode defini-lo quando cria as colunas da tabela na mão.
JTable umaTabela = new JTable(new MeuModel());
umaTabela.setAutoCreateColumnsFromModel(false);
TableColumn coluna = new TableColumn();
coluna.setIdentified("UserName");
coluna.setModelIndex(0); //Índice da coluna no model
coluna.setPreferedWidth(200); //Tamanho desejado para a coluna
umaTabela.addColumn(coluna);
Para saber se a tabela foi clicada 2 vezes, adicione um listener a tabela:
umaTabela.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent evt) {
if (evt.getClickCount() == 2) {
int row = umaTabela.getSelectedRow();
//Seu método aqui
}
}
JTable umaTabela = new JTable(new MeuModel());
umaTabela.setAutoCreateColumnsFromModel(false);
TableColumn coluna = new TableColumn();
coluna.setIdentified("UserName");
coluna.setModelIndex(0); //Índice da coluna no model
coluna.setPreferedWidth(200); //Tamanho desejado para a coluna
umaTabela.addColumn(coluna);
umaTabela.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent evt) {
if (evt.getClickCount() == 2) {
int row = umaTabela.getSelectedRow();
//Seu método aqui
}
}[/quote]