Multiplicando dentro da JTable

3 respostas
I

[b]Pessoal,
tenho dois valores dentro da JTable, um na coluna 0 e outro na coluna 1, quero multiplicar estes dois valores e jogar na coluna 2, alguma dica?

Obrigado.[/b]

3 Respostas

davidtiagoconceicao

Eu faria isto no TableModel, fazendo que a JTable, ao solicitar o valor da coluna 2 já receba o resultado da multiplicação.

I

[b]voce tem algum exemplo ai, porque eu nunca usei o TableModel, estou começando em java, e estou com algumas dificuldades, se der para ajudar, agradeço.

Obrigado.[/b]

davidtiagoconceicao

Infelizmente não consegui visualizar suas mensagens privadas. Está ocorrendo erro de página não encontrada.

Sobre os exemplos, segue um exemplo de TableModel que efetua o processo que você falou:
A classe implementa os métodos abstratos de AbstractTableModel, que são os métodos mínimos para o funcionamento de seu TableModel.

import javax.swing.table.AbstractTableModel;

public class TableModel extends AbstractTableModel {
	// Valores a serem exibidos. Pode buscar as informações de outra classe.
	int[][] values = new int[2][2];

	public TableModel() {
		values[0][0] = 1;
		values[0][1] = 2;
		values[1][0] = 3;
		values[1][1] = 4;
	}

	/**
	 * Retorna a quantidade de colunas a serem exibidas.
	 * */
	@Override
	public int getColumnCount() {
		// Soma um porque a terceira coluna na verdade não existe na matriz
		return values[0].length + 1;
	}

	/**
	 * Retorna a quantidade de linhas a serem exibidas.
	 * */
	@Override
	public int getRowCount() {
		return values.length;
	}

	/**
	 * Retorna o valor de determinada linha e coluna.
	 * */
	@Override
	public Object getValueAt(int rowIndex, int columnIndex) {
		switch (columnIndex) {
		case 0:
		case 1:
			// Caso seja de uma das duas primeiras colunas, retorna a posição na
			// matriz
			return values[rowIndex][columnIndex];
		case 2:
			// Caso seja a terceira coluna, retorna a multiplicação das
			// anteriores;
			return values[rowIndex][columnIndex - 2] * values[rowIndex][columnIndex - 1];
		}
		// Caso não seja nenhuma, retorna zero
		return 0;
	}
}

E um exemplo de classe principal para testes

import javax.swing.JFrame;
import javax.swing.JTable;
import javax.swing.WindowConstants;

public class Main extends JFrame {

	private JTable table = new JTable();

	public Main() {
		super("Teste table");
		table.setModel(new TableModel());
		super.add(table);
		super.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
		super.pack();
		super.setVisible(true);
	}

	public static void main(String[] args) {
		Main main = new Main();
	}
}

Sugiro que você tente construir seu TableModel à partir deste exemplo e, caso não consiga, poste sua dúvida aqui.

Criado 13 de novembro de 2008
Ultima resposta 13 de nov. de 2008
Respostas 3
Participantes 2