squall926 23 de dez. de 2012
Descupa, mas não conseguir ver o erro,… utilizo o mesmo metodo aqui e funciona, segue abaixo:
class ButtonColumn extends AbstractCellEditor implements TableCellRenderer ,
TableCellEditor , ActionListener
{
JTable table ;
JButton renderButton , editButton ;
String text ;
public ButtonColumn ( JTable table , int column )
{
super ();
this . table = table ;
renderButton = new JButton ();
editButton = new JButton ();
editButton . setFocusPainted ( false );
editButton . addActionListener ( this );
TableColumnModel columnModel = table . getColumnModel ();
columnModel . getColumn ( column ). setCellRenderer ( this );
columnModel . getColumn ( column ). setCellEditor ( this );
}
public Object getCellEditorValue () {
return text ;
}
public Component getTableCellRendererComponent ( JTable table , Object value , boolean isSelected , boolean hasFocus , int row , int column ) {
if ( hasFocus )
{
renderButton . setForeground ( table . getForeground ());
renderButton . setBackground ( UIManager . getColor ( "Button.background" ));
}
else if ( isSelected )
{
renderButton . setForeground ( table . getSelectionForeground ());
renderButton . setBackground ( table . getSelectionBackground ());
}
else
{
renderButton . setForeground ( table . getForeground ());
renderButton . setBackground ( UIManager . getColor ( "Button.background" ));
}
renderButton . setText ( ( value == null ) ? "" : value . toString () );
return renderButton ;
}
public Component getTableCellEditorComponent ( JTable table , Object value , boolean isSelected , int row , int column ) {
text = ( value == null ) ? "" : value . toString ();
editButton . setText ( text );
return editButton ;
}
public void actionPerformed ( ActionEvent arg0 ) {
fireEditingStopped ();
//list.remove(table.getSelectedRow());
myModel . removeRow ( table . getSelectedRow ());
}
}
a unica diferença é que essa acima uso como sendo uma subclass da class
public class ManterPedidoService extends JTable
myModel = new MyTableModel ( pedidos , colunas , edicao );
setModel ( myModel );
new ButtonColumn ( this , 5 );
sergiovallejr 24 de dez. de 2012
Tenso…não consigo entender o porque não funciona…já to pirando aqui com esse problema
sergiovallejr 24 de dez. de 2012
Como assim sub class da classe?
sergiovallejr 24 de dez. de 2012
Segue abaixo passo a passo como faço:
Obs.: A tabela (jtable) já está desenhada no formulario, ok?
Construindo os dados na tabela:
jTProgramadas.setModel(new ModeloTabelaMadeirasProgramadas(dadosMadeiras));
jTProgramadas.setColumnModel(defineCabecalhoTabelaMadeirasProgramadas());
jTProgramadas.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
jTProgramadas.getColumnModel().getColumn(0).setHeaderRenderer(new AlinhaTituloColunaTabela(SwingConstants.CENTER));
jTProgramadas.getColumnModel().getColumn(0).setCellRenderer(new AlinhaColunaTabela(SwingConstants.LEFT));
jTProgramadas.getColumnModel().getColumn(1).setHeaderRenderer(new AlinhaTituloColunaTabela(SwingConstants.CENTER));
jTProgramadas.getColumnModel().getColumn(1).setCellRenderer(new AlinhaColunaTabela(SwingConstants.LEFT));
jTProgramadas.getColumnModel().getColumn(2).setHeaderRenderer(new AlinhaTituloColunaTabela(SwingConstants.CENTER));
jTProgramadas.getColumnModel().getColumn(2).setCellRenderer(new AlinhaColunaTabela(SwingConstants.LEFT));
jTProgramadas.getColumnModel().getColumn(3).setHeaderRenderer(new AlinhaTituloColunaTabela(SwingConstants.CENTER));
jTProgramadas.getColumnModel().getColumn(3).setCellRenderer(new AlinhaColunaTabela(SwingConstants.LEFT));
jTProgramadas.getColumnModel().getColumn(4).setHeaderRenderer(new AlinhaTituloColunaTabela(SwingConstants.CENTER));
jTProgramadas.getColumnModel().getColumn(4).setCellRenderer(new AlinhaColunaTabela(SwingConstants.LEFT));
jTProgramadas.getColumnModel().getColumn(5).setHeaderRenderer(new AlinhaTituloColunaTabela(SwingConstants.CENTER));
jTProgramadas.getColumnModel().getColumn(5).setCellRenderer(new AlinhaColunaTabela(SwingConstants.LEFT));
jTProgramadas.getColumnModel().getColumn(6).setHeaderRenderer(new AlinhaTituloColunaTabela(SwingConstants.CENTER));
jTProgramadas.getColumnModel().getColumn(6).setCellRenderer(new AlinhaColunaTabela(SwingConstants.LEFT));
jTProgramadas.getColumnModel().getColumn(7).setHeaderRenderer(new AlinhaTituloColunaTabela(SwingConstants.CENTER));
jTProgramadas.getColumnModel().getColumn(7).setCellRenderer(new AlinhaColunaTabela(SwingConstants.LEFT));
jTProgramadas.getColumnModel().getColumn(8).setHeaderRenderer(new AlinhaTituloColunaTabela(SwingConstants.CENTER));
jTProgramadas.getColumnModel().getColumn(8).setCellRenderer(new AlinhaColunaTabela(SwingConstants.LEFT));
jTProgramadas.getColumnModel().getColumn(9).setHeaderRenderer(new AlinhaTituloColunaTabela(SwingConstants.CENTER));
jTProgramadas.getColumnModel().getColumn(9).setCellRenderer(new AlinhaColunaTabela(SwingConstants.LEFT));
jTProgramadas.getColumnModel().getColumn(10).setHeaderRenderer(new AlinhaTituloColunaTabela(SwingConstants.CENTER));
jTProgramadas.getColumnModel().getColumn(10).setCellRenderer(new AlinhaColunaTabela(SwingConstants.LEFT));
jTProgramadas.getColumnModel().getColumn(11).setHeaderRenderer(new AlinhaTituloColunaTabela(SwingConstants.CENTER));
jTProgramadas.getColumnModel().getColumn(11).setCellRenderer(new AlinhaColunaTabela(SwingConstants.LEFT));
jTProgramadas.getColumnModel().getColumn(12).setHeaderRenderer(new AlinhaTituloColunaTabela(SwingConstants.CENTER));
jTProgramadas.getColumnModel().getColumn(12).setCellRenderer(new AlinhaColunaTabela(SwingConstants.LEFT));
Formatando o cabeçalho do grid:
private DefaultTableColumnModel defineCabecalhoTabelaMadeirasProgramadas () {
// declaração das variáveis
DefaultTableColumnModel cabecalhoTabela ; // modelo contendo o cabeçalho da tabela
TableColumn coluna ; // coluna do cabeçalho
// início do método
cabecalhoTabela = new DefaultTableColumnModel ();
// criando a coluna Nome
coluna = new TableColumn ();
coluna . setModelIndex ( ModeloTabelaMadeirasProgramadas . COLUNA_CODIGO );
coluna . setHeaderValue ( "CÓDIGO" );
coluna . setPreferredWidth ( 200 );
cabecalhoTabela . addColumn ( coluna );
// criando a coluna Descrição
coluna = new TableColumn ();
coluna . setModelIndex ( ModeloTabelaMadeirasProgramadas . COLUNA_TIPO_ACO );
coluna . setHeaderValue ( "AÇO" );
coluna . setPreferredWidth ( 200 );
cabecalhoTabela . addColumn ( coluna );
coluna = new TableColumn ();
coluna . setModelIndex ( ModeloTabelaMadeirasProgramadas . COLUNA_DATA_INICIO_PROCESSO );
coluna . setHeaderValue ( "DATA INICIO PROCESSO" );
coluna . setPreferredWidth ( 500 );
cabecalhoTabela . addColumn ( coluna );
coluna = new TableColumn ();
coluna . setModelIndex ( ModeloTabelaMadeirasProgramadas . COLUNA_DATA_FIM_PROCESSO );
coluna . setHeaderValue ( "DATA FIM PROCESSO" );
coluna . setPreferredWidth ( 500 );
cabecalhoTabela . addColumn ( coluna );
coluna = new TableColumn ();
coluna . setModelIndex ( ModeloTabelaMadeirasProgramadas . COLUNA_LARGURA );
coluna . setHeaderValue ( "LARGURA" );
coluna . setPreferredWidth ( 500 );
cabecalhoTabela . addColumn ( coluna );
coluna = new TableColumn ();
coluna . setModelIndex ( ModeloTabelaMadeirasProgramadas . COLUNA_COMPRIMENTO );
coluna . setHeaderValue ( "COMPRIMENTO" );
coluna . setPreferredWidth ( 500 );
cabecalhoTabela . addColumn ( coluna );
coluna = new TableColumn ();
coluna . setModelIndex ( ModeloTabelaMadeirasProgramadas . COLUNA_PESO );
coluna . setHeaderValue ( "PESO" );
coluna . setPreferredWidth ( 500 );
cabecalhoTabela . addColumn ( coluna );
coluna = new TableColumn ();
coluna . setModelIndex ( ModeloTabelaMadeirasProgramadas . COLUNA_ESPESSURAINICIAL );
coluna . setHeaderValue ( "ESPESSURA INICIAL" );
coluna . setPreferredWidth ( 500 );
cabecalhoTabela . addColumn ( coluna );
coluna = new TableColumn ();
coluna . setModelIndex ( ModeloTabelaMadeirasProgramadas . COLUNA_ESPESSURAFINAL );
coluna . setHeaderValue ( "ESPESSURA FINAL" );
coluna . setPreferredWidth ( 500 );
cabecalhoTabela . addColumn ( coluna );
coluna = new TableColumn ();
coluna . setModelIndex ( ModeloTabelaMadeirasProgramadas . COLUNA_TOL_ESPESSURA_INF );
coluna . setHeaderValue ( "TOLERANCIA ESPESSURA INFERIOR" );
coluna . setPreferredWidth ( 500 );
cabecalhoTabela . addColumn ( coluna );
coluna = new TableColumn ();
coluna . setModelIndex ( ModeloTabelaMadeirasProgramadas . COLUNA_TOL_ESPESSURA_SUP );
coluna . setHeaderValue ( "TOLERANCIA ESPESSURA SUPERIOR" );
coluna . setPreferredWidth ( 500 );
cabecalhoTabela . addColumn ( coluna );
coluna = new TableColumn ();
coluna . setModelIndex ( ModeloTabelaMadeirasProgramadas . COLUNA_BOTAO_VISUALIZAR );
coluna . setHeaderValue ( "" );
coluna . setPreferredWidth ( 50 );
cabecalhoTabela . addColumn ( coluna );
coluna = new TableColumn ();
coluna . setModelIndex ( ModeloTabelaMadeirasProgramadas . COLUNA_BOTAO_EXCLUIR );
coluna . setHeaderValue ( "" );
coluna . setPreferredWidth ( 50 );
cabecalhoTabela . addColumn ( coluna );
return cabecalhoTabela ;
}
Inserindo os botões no grid:
try {
ButtonColumn botaoExibir = new ButtonColumn(jTProgramadas, 11);
ButtonColumn botaoExcluir = new ButtonColumn(jTProgramadas, 12);
botaoExibir.renderButton.setIcon(new ImageIcon(Util.getImagem("icon_lupa.png")));
botaoExcluir.renderButton.setIcon(new ImageIcon(Util.getImagem("delete_icon.png")));
} catch (IOException ex) {
java.util.logging.Logger.getLogger(TelaProgramacaoDeMadeiras.class.getName()).log(Level.SEVERE, null, ex);
}