JTable piscar célula

5 respostas
C

Fala pessoal,

Estou trabalhando com a JTable e preciso piscar na tela a célula que teve o valor alterado

Ideias??

5 Respostas

T

CCampos,
eu também estou precisando fazer isso.
Acho que deve haver alguma forma de implementar isso, fazendo com que a própria JTable seja responsável por verificar se houve alguma mudança de valor e disparar algum evento para que o Ticker seja realizado.
Ainda não sei como.

Alguém tem alguma idéia de como fazer isso?

Adelar

Olá,
você pode lançar uma thread que receba a tabela, modifique a cor da célula, depois de um tempo (1 segundo p.ex.) volta para a cor original e finaliza. Ela seria lançada sempre que houver uma alteração de valor de alguma célula.

Att.

C

Adelar, esses passos eu já sei, o que eu gostaria é saber como identificar qual celula foi alterada para poder pisca-la
utilizando recursos da JTable.

Adelar

Se você não tem como saber quando um item é alterado pode ser usado o padrão Observer-Observable na JTable. Não encotrei um bom link que mostre como fazer… por enquanto vou mandar este que tem mais ou menos haver http://www.guj.com.br/posts/list/15/202783.java

Att.

Adelar
Segue um código de exemplo:
import java.awt.BorderLayout;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener;

public class Test3 {
	public static void main(String args[]) {

		final Object rowData[][] = { { "1", "one", "I" }, { "2", "two", "II" }, { "3", "three", "III" } };
		final String columnNames[] = { "#", "English", "Roman" };

		final JTable table = new JTable(rowData, columnNames);
		JScrollPane scrollPane = new JScrollPane(table);
		table.getModel().addTableModelListener(new TableModelListener() {

			public void tableChanged(TableModelEvent e) {
				// mostrando a linha e a coluna onde foi realizada a modificação
				int linha=e.getFirstRow();
				int coluna=e.getFirstRow();
				System.out.println(linha + " " + coluna);
			}
		});

		table.setValueAt("",0,0);
		JFrame frame = new JFrame("Resizing Table");
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

		frame.add(scrollPane, BorderLayout.CENTER);

		frame.setSize(300, 150);
		frame.setVisible(true);

	}
}

Att.

Criado 24 de agosto de 2010
Ultima resposta 25 de ago. de 2010
Respostas 5
Participantes 3