é....testei fazer uns testes com o updateUI ..mas tb nao funcionou...
aqui ta postado a classe que cria minha tabela e a que chama tb....
se alguem puder dar uma ajuda agradeço........
package br.com.platina.visual;
import br.com.platina.factory.*;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Toolkit;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.File;
import java.util.ArrayList;
import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.ListSelectionModel;
import javax.swing.ScrollPaneConstants;
import javax.swing.text.PlainView;
import javax.swing.text.StyledEditorKit.BoldAction;
import com.sun.org.apache.xerces.internal.impl.RevalidationHandler;
import ch.randelshofer.quaqua.QuaquaLookAndFeel;
import ch.randelshofer.quaqua.QuaquaManager;
import ch.randelshofer.quaqua.subset.Quaqua14ColorChooserLAF;
import com.birosoft.liquid.LiquidLookAndFeel;
public class PlatinaViewer extends JFrame implements Runnable {
static JTable jtable = new JTable();
static CanalEmUso canalEmUso;
static LoadLibraryboard libraryboard = new LoadLibraryboard();
String EntradaSaida = "";
int canais;
private JTable tabela = null;
private JScrollPane scrollTabela = null;
/**
*
* Inicializa a classe
*
*
*
*/
public PlatinaViewer() {
// Cria o titulo do frame
super("Platina Server");
super.update(getGraphics());
// Inicia a placa
JOptionPane.showMessageDialog(null, libraryboard.IniciaPlaca(
"C://Shcti//ShConfig.ini", "C://Shcti//ShIndex.ini"));
// Configura a posicao
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
setBounds(300, 150, screenSize.width = 400, screenSize.height = 413);
// Adiciona o JScrollPane que contem a JTable
getContentPane().add(getScrollTabela(), BorderLayout.CENTER);
// Mostra o formulario na tela
// Tela Fixa true = tamanho alteravel ou false = tamanho fixo
setResizable(false);
setDefaultCloseOperation(this.EXIT_ON_CLOSE);
setVisible(true);
}
public void run() {
getScrollTabela();
createJTable();
Thread thread = new Thread(PlatinaViewer.this);
thread.start();
}
/**
* Cria o scroll onde irá conter a jtable
*/
private JScrollPane getScrollTabela() {
if (scrollTabela == null) {
scrollTabela = new JScrollPane(createJTable());
scrollTabela
.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
}
if (scrollTabela != null) {
scrollTabela = new JScrollPane(createJTable());
scrollTabela
.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
}
return scrollTabela;
}
/**
* Cria a JTable
*/
public JTable createJTable() {
ArrayList dados = new ArrayList();
// Cria os Headers
String[] colunas = new String[] { "Canais", "Status" };
// edicao de texto true = escrita disponivel false = nao disponivel
boolean[] edicao = { false, false };
// Conta o numero de Canais
System.out.println("sdaaaaaaaaaa");
for (canais = 0; canais < libraryboard.GetMaxchannel(); canais++) {
// Pega o Status
dados.add(new String[] { "" + canais,
libraryboard.ShowStatePlatina(canais) });
if (libraryboard.ShowStatePlatina(canais) == "Canal Livre") {
EntradaSaida = "";
libraryboard.StopRecToFile(canais);
}
if (libraryboard.ShowStatePlatina(canais) == "Tocando") {
EntradaSaida = "Interna";
}
if (canalEmUso != null) {
if (canalEmUso.getName() != "Thread :" + canais
& canalEmUso.isAlive() == false
& libraryboard.ShowStatePlatina(canais) == "Canal em Uso") {
System.out
.println("Thread Criadaaaa");
if (EntradaSaida == "") {
EntradaSaida = "Externa";
}
Thread threadAtendimento = new Thread(canalEmUso);
threadAtendimento.start();
new CanalEmUso("Thread :" + canais).run(canais,
EntradaSaida);
}
} else if (libraryboard.ShowStatePlatina(canais) == "Canal em Uso") {
System.out
.println("Thread criada com canal nulo");
if (EntradaSaida == "") {
EntradaSaida = "Externa";
}
Thread threadAtendimento = new Thread(canalEmUso);
threadAtendimento.start();
new CanalEmUso("Thread :" + canais).run(canais, EntradaSaida);
}
}
// insere os atributos pedidos pelo construtor
TabelaPlatina modelo = new TabelaPlatina(dados, colunas, edicao);
jtable = new JTable(modelo);
return jtable;
}
}
e a classe da tabela é a seguinte....
tentei seguir o tutorial aqui do guj...ela aparece legal..só nao atualiza...
package br.com.platina.visual;
import java.util.ArrayList;
import java.util.Iterator;
import javax.swing.BorderFactory;
import javax.swing.JTable;
import javax.swing.RepaintManager;
import javax.swing.table.AbstractTableModel;
import sun.awt.RepaintArea;
public class TabelaPlatina extends AbstractTableModel {
private ArrayList linhas = null;
private String[] colunas = null;
// Edicao de colunas true = insere texto false nao insere os dados
private boolean[] colsEdicao;
/**
* Contrutor Da classe Platina, recebe-la os dados a serem exibidos e as
* colunas que devem ser criadas da Platina Viewer.
*/
public TabelaPlatina(ArrayList dados, String[] colunas, boolean[] edicao) {
setLinhas(dados);
setColunas(colunas);
colsEdicao = edicao;
}
/**
* Retorna o numero de colunas no modelo
*/
public int getColumnCount() {
return getColunas().length;
}
/**
* Retorna o numero de linhas existentes no modelo
*/
public int getRowCount() {
return getLinhas().size();
}
/**
* Obtem o valor na linha e coluna
*/
public Object getValueAt(int rowIndex, int columnIndex) {
String[] linha = (String[]) getLinhas().get(rowIndex);
// Retorna o objeto que esta na coluna
return linha[columnIndex];
}
public String[] getColunas() {
return colunas;
}
public ArrayList getLinhas() {
return linhas;
}
public void setColunas(String[] strings) {
colunas = strings;
}
public void setLinhas(ArrayList list) {
linhas = list;
}
/**
* Seta o valor na linha e coluna
*
* @see javax.swing.table.TableModel#setValueAt(java.lang.Object, int, int)
*/
public void setValueAt(Object value, int row, int col) {
String[] linha = (String[]) getLinhas().get(row);
// Altera o conteudo no indice da coluna passado
linha[col] = (String) value;
// dispara o evento de celula alterada
fireTableCellUpdated(row, col);
}
/**
* Retorna se a celula pode ser editada
*
* @see javax.swing.table.TableModel#isCellEditable(int, int)
*/
public boolean isCellEditable(int row, int col) {
return colsEdicao[col];
}
/**
* Adiciona o array na linha
*/
public void addRow(String[] dadosLinha) {
getLinhas().add(dadosLinha);
// Informa a jtable de que houve linhas incluidas no modelo
// COmo adicionamos no final, pegamos o tamanho total do modelo
// menos 1 para obter a linha incluida.
int linha = getLinhas().size() - 1;
fireTableStructureChanged();
fireTableCellUpdated(linha, linha);
return;
}
/**
* Remove a linha pelo indice informado
*
* @param row
*/
public void removeRow(int row) {
getLinhas().remove(row-1);
// informa a jtable que houve dados deletados passando a
// linha reovida
fireTableRowsDeleted(row, row);
}
/**
* Remove a linha pelo valor da coluna informada
*/
public boolean removeRow(String val, int col) {
// obtem o iterator
Iterator i = getLinhas().iterator();
int linha = 0;
// Faz um looping em cima das linhas
while (i.hasNext()) {
// Obtem as colunas da linha atual
String[] linhaCorrente = (String[]) i.next();
linha++;
// compara o conteudo String da linha atual na coluna desejada
// com o valor informado
if (linhaCorrente[col].equals(val)) {
getLinhas().remove(linha);
// informa a jtable que houve dados deletados passando a
// linha removida
System.out.println("remove row");
fireTableRowsDeleted(linha, linha);
return true;
}
}
// Nao encontrou nada
return false;
}
/**
* Retorna o nome da coluna.
*/
public String getColumnName(int col) {
return getColunas()[col];
}
}
se alguem puder me dar umas dicas de como fazer desde já agradeço....