Bom dia Galera!!!
Estou com um problema que não consigo resolver, parece simples mas realmente não consegui implementar no meu código!
Preciso apenas colocar valores CHECKBOX no último campo do meu JTable, uso o MySql, e declarei esse campo como char(1), não sei se tem alguma coisa a ver, gostaria apenas disso, ao invés de ter valores false, true, n, s, v, f, quero colocar um CHECK BOX, ticado ou não ticado!!!!!!
Mto obrigado ...
package br.com.edson.banco;
import java.awt.ComponentOrientation;
import java.awt.Dimension;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.DefaultCellEditor;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JRootPane;
import javax.swing.JScrollPane;
import javax.swing.JTable;
public class CadastroBD extends JFrame implements ActionListener {
private static final long serialVersionUID = 1L;
private JTable tabela;
private JLabel label;
private JComboBox cmbSexo, cmbEstado;
private JScrollPane jsp;
private JButton btnIncluir, btnExcluir, btnAdd, btnRem;
private QueryBD modelo;
Connection conn = null;
ResultSet rs = null;
Statement stm = null;
public CadastroBD() {
super("Cadastro de Clientes");
this.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);
this.setUndecorated(true);
this.getRootPane().setWindowDecorationStyle(JRootPane.FRAME);
try {
Class.forName("com.mysql.jdbc.Driver");
String urlConexao = "jdbc:mysql://localhost:3306/BarTeste";
String sql = "SELECT id_cli,Nome,Sexo,Uf,DataCli,Ativo FROM Cliente";
conn = DriverManager.getConnection(urlConexao, "root", " ");
stm = conn.createStatement(ResultSet.CONCUR_UPDATABLE,ResultSet.TYPE_SCROLL_SENSITIVE);
rs = stm.executeQuery(sql);
while (rs.next()) {
System.out.println(rs.getString("id_cli") + " - "
+ rs.getString("Nome") + " - " + rs.getString("Sexo")
+ " - " + rs.getString("Uf") + " - "
+ rs.getString("DataCli") + " - "
+ rs.getString("Ativo"));
}
centroTela();
String[] sexos = { "M", "F" };
cmbSexo = new JComboBox(sexos);
String[] estados = { "AC", "AL", "AM", "AP", "BA", "CE", "DF",
"ES", "GO", "MA", "MG", "MS", "MT", "PA", "PB", "PE", "PI",
"PR", "RJ", "RN", "RO", "RR", "RS", "SC", "SE", "SP", "TO" };
cmbEstado = new JComboBox(estados);
modelo = new QueryBD(rs);
tabela = new JTable(modelo);
jsp = new JScrollPane(tabela);
add(jsp, "Center");
label = new JLabel("<<|>>");
btnIncluir = new JButton("Incluir");
btnExcluir = new JButton("Excluir");
btnAdd = new JButton("Adicionar");
btnRem = new JButton("Remover");
btnIncluir.addActionListener(this);
btnExcluir.addActionListener(this);
btnAdd.addActionListener(this);
btnRem.addActionListener(this);
JPanel panel = new JPanel();
panel.add(btnIncluir);
panel.add(btnExcluir);
panel.add(label);
panel.add(btnAdd);
panel.add(btnRem);
add(panel, "South");
pack();
setSize(450, 400);
setVisible(true);
setResizable(false);
} catch (ClassNotFoundException err) {
err.printStackTrace();
} catch (SQLException err) {
err.printStackTrace();
}
tabela.getColumn(tabela.getColumnName(0)).setResizable(false);
tabela.getColumn(tabela.getColumnName(0)).setHeaderValue(modelo.getNomeColuna(0));
tabela.getColumn(tabela.getColumnName(1)).setResizable(false);
tabela.getColumn(tabela.getColumnName(1)).setHeaderValue(modelo.getNomeColuna(1));
tabela.getColumn(tabela.getColumnName(2)).setResizable(false);
tabela.getColumn(tabela.getColumnName(2)).setCellEditor(new DefaultCellEditor(cmbSexo));
tabela.getColumn(tabela.getColumnName(2)).setHeaderValue(modelo.getNomeColuna(2));
tabela.getColumn(tabela.getColumnName(3)).setResizable(false);
tabela.getColumn(tabela.getColumnName(3)).setCellEditor(new DefaultCellEditor(cmbEstado));
tabela.getColumn(tabela.getColumnName(3)).setHeaderValue(modelo.getNomeColuna(3));
tabela.getColumn(tabela.getColumnName(4)).setResizable(false);
tabela.getColumn(tabela.getColumnName(4)).setHeaderValue(modelo.getNomeColuna(4));
tabela.getColumn(tabela.getColumnName(5)).setResizable(false);
tabela.getColumn(tabela.getColumnName(5)).setHeaderValue(modelo.getNomeColuna(5));
}
public void actionPerformed(ActionEvent botao) {
Object btn = botao.getSource();
if (btn == btnIncluir) {
Object[] valores = new Object[2];
valores[0] = JOptionPane.showInputDialog("Digite o nome");
// valores[1] = JOptionPane.showInputDialog("Digite o sexo");
// valores[2] = JOptionPane.showInputDialog("Digite o estado");
valores[3] = JOptionPane.showInputDialog("Digite a data");
valores[4] = new Boolean(JOptionPane.showInputDialog("Está Ativo?"));
modelo.addLinha(valores);
} else if (btn == btnExcluir) {
if (tabela.getSelectedRowCount() == 0) {
JOptionPane.showMessageDialog(null,"Não existe linha selecionada");
} else {
int[] linha = tabela.getSelectedRows();
for (int i = linha.length - 1; i >= 0; i--) {
modelo.removeLinha(linha[i]);
}
}
}
if (btn == btnRem) {
}
}
public void centroTela() {
Dimension tela = Toolkit.getDefaultToolkit().getScreenSize();
setSize(450, 400);
setLocation((tela.width - this.getSize().width) / 2,
(tela.height - this.getSize().height) / 2);
}
public static void main(String[] args) {
new CadastroBD();
}
}
*****************
package br.com.edson.banco;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import javax.swing.table.AbstractTableModel;
public class QueryBD extends AbstractTableModel{
private static final long serialVersionUID = 1L;
private ResultSet rs = null;
private ResultSetMetaData rsmt = null;
public QueryBD(ResultSet rs) {
this.rs = rs;
try {
rsmt = rs.getMetaData();
rs.first();
}catch(SQLException sqlException) {
sqlException.printStackTrace();
}
}
public int getColumnCount() {
int coluna = 0;
try {
coluna = rsmt.getColumnCount();
}catch(SQLException sqlException) {
sqlException.printStackTrace();
}
return coluna;
}
public int getRowCount() {
int qtdLinha = 0;
int linhaAtual = 1;
try {
linhaAtual = rs.getRow();
rs.last();
qtdLinha = rs.getRow();
if (linhaAtual > 0 )
rs.absolute(linhaAtual);
}catch(SQLException sqlException) {
sqlException.printStackTrace();
}
return qtdLinha;
}
public String getNomeColuna(int coluna) {
String nomeColuna = "";
try {
nomeColuna = rsmt.getColumnName(coluna + 1);
}catch(SQLException sqlException) {
sqlException.printStackTrace();
}
return nomeColuna;
}
public void setValueAt(Object valor, int linha, int coluna) {
try {
rs.absolute(linha + 1);
rs.updateObject(coluna + 1, valor);
rs.updateRow();
}catch(SQLException sqlException) {
sqlException.printStackTrace();
}
}
public boolean isCellEditable(int linha, int coluna) {
if (coluna == 0) {
return false;
}
return true;
}
public void addLinha(Object[] linha) {
try {
rs.moveToInsertRow();
for (int i = 0; i < linha.length; i++) {
rs.updateObject(i + 2, linha[i]);
}
rs.updateRow();
fireTableDataChanged();
} catch (SQLException sqlException) {
sqlException.printStackTrace();
}
}
public void removeLinha(int linha) {
try {
rs.absolute(linha + 1);
rs.deleteRow();
fireTableRowsDeleted(linha, linha);
} catch (SQLException sqlException) {
sqlException.printStackTrace();
}
}
public Object getValueAt(int linha, int coluna) {
Object valor = null;
try {
rs.absolute(linha + 1);
valor = rs.getObject(coluna + 1);
} catch (SQLException e) {
e.printStackTrace();
}
return valor;
}
}