ramilani12 15 de mai. de 2007
Vc teria que remontar a sua JTable o mesmo metodo que vc cria usaria para remontar.
maruero 16 de mai. de 2007
O engraçado é que ta cherando a algum bug ou do meu código, heheheheheh ou do fireTableDataChanged();
Pq o papel do fireTableDataChanged(); é atualizar a minha tabela, ou seja,
chamar todos os metodos da meu modelo necessários para a atualização visual da minha tabela! ( getColumnCount(), getRowCount(), getValueAt(), etc. )ou estou errado?
Já tentei colocar um repaint(), mas nao deu certo!
Como eu disse só funciona se eu realmente obriga-la a repinta, alterando o status da Jframe que ela está. Mas isso é um quebra galho horrivel. hehehehhehehehehehe
ME AJUDEM!!!
Marky.Vasconcelos 16 de mai. de 2007
vc já tentou usar
fireTableStructureChanged();?
seu model estende de AbstractTableModel();?
se quiser te passo minha classe que estende AbstractTableModel pra vc ver
maruero 17 de mai. de 2007
já usei sim, dá uma olhada no código:
class regGrupo {
private String cadastro ;
private String municipio ;
private String proprietario ;
private String propriedade ;
private String grupo ;
public regGrupo ( String cad , String mun , String prt , String prp , String gru ){
cadastro = cad ;
municipio = mun ;
proprietario = prt ;
propriedade = prp ;
grupo = gru ;
}
public String getCampos ( int camp ){
switch ( camp ){
case 0 :
return cadastro ;
case 1 :
return municipio ;
case 2 :
return proprietario ;
case 3 :
return propriedade ;
default :
return null ;
}
}
public boolean isGrupo ( String gru ){
if ( grupo == null )
return false ;
return grupo . equals ( gru ) ? true : false ;
}
}
class modeloTabGrupo extends AbstractTableModel implements ActionListener {
private Vector < regGrupo > dados = new Vector < regGrupo > ();
private Vector < regGrupo > data = new Vector < regGrupo > ();
private String [] colunas = { "Cadastro" , "Município" , "Proprietário" , "Propriedade" };
private String grupo = null ;
public void addTableModelListener ( TableModelListener arg0 ) {
}
public void filtra (){
dados . removeAllElements ();
for ( regGrupo reg : data ){
if ( reg . isGrupo ( grupo ) )
dados . add ( reg );
}
this . fireTableDataChanged ();
this . fireTableStructureChanged ();
}
public Class <?> getColumnClass ( int arg0 ) {
return String . class ;
}
public int getColumnCount () {
return colunas . length ;
}
public String getColumnName ( int col ) {
return colunas [ col ] ;
}
public int getRowCount () {
return dados . size ();
}
public void addReg ( String cad , String mun , String prt , String prp , String gru ){
data . add ( new regGrupo ( cad , mun , prt , prp , gru ) );
this . filtra ();
}
public Object getValueAt ( int linha , int coluna ) {
if ( grupo == null )
return null ;
regGrupo reg = dados . get ( linha );
return reg . getCampos ( coluna );
}
public boolean isCellEditable ( int arg0 , int arg1 ) {
return false ;
}
public void removeTableModelListener ( TableModelListener arg0 ){ }
public void setValueAt ( Object arg0 , int arg1 , int arg2 ) { }
public void actionPerformed ( ActionEvent e ) {
JComboBox box = ( JComboBox ) e . getSource ();
grupo = ( String ) box . getSelectedItem ();
if ( grupo == "" )
grupo = null ;
this . filtra ();
}
}
o ouvinte do actionListener está ouvindo um comboBox e q a partir dele q eu quero q mude a tabela.
ele está ouvindo corretamente.
me ajuda ai!!!
Marky.Vasconcelos 17 de mai. de 2007
Vou mandar o meu código e ve se te ajuda
import java.util.ArrayList ;
import javax.swing.table.AbstractTableModel ;
public class AbstractTableResult extends AbstractTableModel {
/**
*
*/
private static final long serialVersionUID = 1L ;
public ArrayList < String []> date = new ArrayList < String []> ();
public String [] colunas ;
public AbstractTableResult ( String [] col ){
colunas = col ;
}
public int getColumnCount () {
return colunas . length ;
}
public int getRowCount () {
return date . size ();
}
public Object getValueAt ( int row , int col ) {
return date . get ( row ) [ col ] ;
}
public boolean isCellEditable (){
return false ;
}
@Override
public String getColumnName ( int col ){
return colunas [ col ] ;
}
public void addRow ( String [] dados ){
date . add ( dados );
fireTableStructureChanged ();
}
public void clear () {
this . date . clear ();
fireTableStructureChanged ();
}
}
e um exemplo de como usalo
import java.awt.event.ActionEvent ;
import java.awt.event.ActionListener ;
import java.awt.event.MouseAdapter ;
import java.awt.event.MouseEvent ;
import java.util.ArrayList ;
import javax.swing.ListSelectionModel ;
import javax.swing.event.ListSelectionEvent ;
import javax.swing.event.ListSelectionListener ;
import javax.swing.table.TableColumn ;
import org.hibernate.Session ;
import Hibernate.HibernateFactory ;
import cliente.Cliente ;
public class pesquisaCotacoes extends javax . swing . JFrame {
public static int row ;
/**
*
*/
private static final long serialVersionUID = 5871561169689193601L ;
/**
*
* @author Junior
*/
public pesquisaCotacoes () {
initComponents ();
}
private void initComponents () {
jScrollPane1 = new javax . swing . JScrollPane ();
jTable1 = new javax . swing . JTable ();
jButton1 = new javax . swing . JButton ();
jButton2 = new javax . swing . JButton ();
jTextField1 = new javax . swing . JTextField ();
setDefaultCloseOperation ( javax . swing . WindowConstants . DISPOSE_ON_CLOSE );
String [] colunas = { "N° Cotação" , "Valor Frete" , "Cliente" };
model = new AbstractTableResult ( colunas );
jTable1 . setModel ( model );
TableColumn column = null ;
for ( int i = 0 ; i < 3 ; i ++ ) {
column = jTable1 . getColumnModel (). getColumn ( i );
if ( i == 0 ){
column . setPreferredWidth ( 8 );
} else if ( i == 1 ){
column . setPreferredWidth ( 45 );
} else {
column . setPreferredWidth ( 180 );
}
}
jTable1 . setSelectionMode ( ListSelectionModel . SINGLE_SELECTION );
jTable1 . setRowSelectionAllowed ( true );
ListSelectionModel rowSM = jTable1 . getSelectionModel ();
rowSM . addListSelectionListener ( new ListSelectionListener (){
public void valueChanged ( ListSelectionEvent e ) {
if ( e . getValueIsAdjusting ())
return ;
ListSelectionModel lsm = ( ListSelectionModel ) e . getSource ();
if ( lsm . isSelectionEmpty ()){
System . out . println ( "Nenhuma linha selecionada." );
}
else {
int selectedRow = lsm . getMinSelectionIndex ();
System . out . println ( selectedRow );
row = selectedRow ;
}}});
jTable1 . addMouseListener ( new MouseAdapter (){
public void mouseClicked ( MouseEvent e ){
if ( e . getClickCount () == 2 ){
Session session = new HibernateFactory (). getSession ();
long c = ( long ) Integer . valueOf ( row + 1 );
Cotacao ac = new Cotacao (). procurarCotacao ( c );
Cliente owner = ( Cliente ) session . load ( Cliente . class , ac . getIdCliente ());
FCotacao ab = new FCotacao ( owner . getCNPJ ());
ab . setVisible ( true );
ab . fieldsCliente ();
ab . fieldsCotacao ( ac );
ab . fieldsCotacaoTable ( ac );
ab . cotacaoNuF . setText ( String . valueOf ( ac . getId ()) + "/07" );
setVisible ( false );
}
}
});
jScrollPane1 . setViewportView ( jTable1 );
jButton1 . setText ( "Abrir Cota\u00e7\u00e3o" );
jButton2 . setText ( "Procurar:" );
javax . swing . GroupLayout layout = new javax . swing . GroupLayout ( getContentPane ());
getContentPane (). setLayout ( layout );
layout . setHorizontalGroup (
layout . createParallelGroup ( javax . swing . GroupLayout . Alignment . LEADING )
. addGroup ( layout . createSequentialGroup ()
. addContainerGap ()
. addGroup ( layout . createParallelGroup ( javax . swing . GroupLayout . Alignment . LEADING )
. addComponent ( jScrollPane1 , javax . swing . GroupLayout . DEFAULT_SIZE , 380 , Short . MAX_VALUE )
. addGroup ( javax . swing . GroupLayout . Alignment . TRAILING , layout . createSequentialGroup ()
. addComponent ( jButton2 )
. addPreferredGap ( javax . swing . LayoutStyle . ComponentPlacement . RELATED )
. addComponent ( jTextField1 , javax . swing . GroupLayout . DEFAULT_SIZE , 192 , Short . MAX_VALUE )
. addPreferredGap ( javax . swing . LayoutStyle . ComponentPlacement . RELATED )
. addComponent ( jButton1 )))
. addContainerGap ())
);
layout . setVerticalGroup (
layout . createParallelGroup ( javax . swing . GroupLayout . Alignment . LEADING )
. addGroup ( layout . createSequentialGroup ()
. addContainerGap ()
. addComponent ( jScrollPane1 , javax . swing . GroupLayout . PREFERRED_SIZE , 212 , javax . swing . GroupLayout . PREFERRED_SIZE )
. addPreferredGap ( javax . swing . LayoutStyle . ComponentPlacement . RELATED )
. addGroup ( layout . createParallelGroup ( javax . swing . GroupLayout . Alignment . BASELINE )
. addComponent ( jButton1 )
. addComponent ( jButton2 )
. addComponent ( jTextField1 , javax . swing . GroupLayout . PREFERRED_SIZE , javax . swing . GroupLayout . DEFAULT_SIZE , javax . swing . GroupLayout . PREFERRED_SIZE ))
. addContainerGap ( javax . swing . GroupLayout . DEFAULT_SIZE , Short . MAX_VALUE ))
);
pack ();
setVisible ( true );
}
private AbstractTableResult model ;
private javax . swing . JButton jButton1 ;
private javax . swing . JButton jButton2 ;
private javax . swing . JScrollPane jScrollPane1 ;
private javax . swing . JTable jTable1 ;
private javax . swing . JTextField jTextField1 ;
}