Quantcast
Channel: GUJ - Tópicos com a tag java
Viewing all articles
Browse latest Browse all 17410

Jtable implementação setValueAt para objeto salvar para campo checkBox

$
0
0

@NelsonS escreveu:

pessoal, peço antecipadamente desculpa pela minha ignorância, mas estou começando em programação JAVA (antes VBA EXCEL , basico) e estou com problema em implementar a alteração num JTABLE , quando altero um campo (checkbox). Ele altera o visual mas não grava a alteração. Confesso que faz 3 dias que leio, vejo artigos releio... acho que é uma coisa simples, mas para mim ficou absurdamente extressante...
Implementei a AbstractTableModel.... (vide codigo abaixo):

import java.util.ArrayList; 
import javax.swing.JOptionPane; 
import javax.swing.table.AbstractTableModel; 


public class modeloTabelaCheckBox extends AbstractTableModel{ 
private ArrayList linhas = null; 
private String[] colunas = null; 


public modeloTabelaCheckBox(ArrayList lin, String[] col){ 
setLinhas(lin); // jogo o array preenchido para a variavel linhas -> metodo set abaixo.... 
setColunas(col); // seta o total de colunas para variavel colunas -> metodo set abaixo 
} 
public void setColunas(String[] nomes) { 
this.colunas = nomes; 
} 
public void setLinhas(ArrayList dados) { 
this.linhas = dados; 
} 
@Override 
public Class getColumnClass(int c) { 
/* Class klass = String.class; 
if (column == 0){ 
klass = Boolean.class; 
return klass; 
}*/ 
return getValueAt(0,c).getClass(); 

} 
@Override 
public boolean isCellEditable(int row, int column) { 
return column == 0; 
} 
public ArrayList getLinhas() { // 
return linhas; 
} 
public String[] getColunas() { 
return colunas; 
} 
@Override 
public int getColumnCount(){ 
return colunas.length; // conta o tamanhode colunas ... 
} 
@Override 
public int getRowCount(){ 
return linhas.size(); // conta o tamanho do array 
} 
@Override 
public String getColumnName(int numCol){ // pega o nome da coluna.... através do numero da coluna... 
return colunas[numCol]; // retorna o nome da coluna.... 
} 
@Override 
public Object getValueAt(int numLin, int numCol){ // retorn 
Object[] linha = (Object[])getLinhas().get(numLin); 
return linha[numCol]; 
} 
public void setValueAt(Object valor, int numLin, int numCol){ ////// ESTE É O METODO QUE PRECISO FAZER , alterar o campo booleano na table ..... 
????? /// um campo checkbox.... 
// boolean selecao = (boolean)this.getValueAt(numLin, numCol); 
if( (boolean) valor == false){ 
valor = true; 

} 
???? 
fireTableCellUpdated(numLin, numCol); 
???? 
} 

}

Aqui é onde eu preencho a Table e a chamo .... (codigo abaixo .... )

private void preencherTabelaReceita(String sql){
ArrayList dados = new ArrayList();
String[] colunas = new String[]{"Sel:","Reg:","Medicamento", "Quantidade :", "Unidade:", "Forma de Uso:","Posologia:", "Port.:"};
Statement stm = null;
ResultSet rs = null;
try {
conexao.conecta(1); // 1 quer dizer medconBD1 e 0 - medconBD
} catch (SQLException ex) {
JOptionPane.showMessageDialog(null, "Erro ao acessar BDados!\n " + ex);
}
try {
stm = conexao.conn.createStatement();
rs = stm.executeQuery(sql);
} catch (SQLException ex) {
JOptionPane.showMessageDialog(null, "ERRO COMANDOS SQL !\n " + ex);
}

try {
if (rs.next()) {

do {
dados.add(new Object[]{false, rs.getInt("id_receitas",rs.getString("nome_remedio", rs.getString("qtdade", rs.getString("unidade",
rs.getString("posologia", rs.getString("posologia1",rs.getString("Portaria"});
} while (rs.next());
}
} catch (SQLException ex) {
JOptionPane.showMessageDialog(null, "Erro preenchimento ARRAY ! \n " + ex);
}
conexao.desconecta();
stm = null;
rs = null;
modeloTabelaCheckBox modelo = new modeloTabelaCheckBox(dados, colunas);
tbl_Receita.setModel(modelo);
tbl_Receita.getColumnModel().getColumn(0).setPreferredWidth(60);
tbl_Receita.getColumnModel().getColumn(0).setResizable(false);
tbl_Receita.getColumnModel().getColumn(1).setPreferredWidth(60);
tbl_Receita.getColumnModel().getColumn(1).setResizable(false);
tbl_Receita.getColumnModel().getColumn(2).setPreferredWidth(220);
tbl_Receita.getColumnModel().getColumn(2).setResizable(false);
tbl_Receita.getColumnModel().getColumn(3).setPreferredWidth(90);
tbl_Receita.getColumnModel().getColumn(3).setResizable(false);
tbl_Receita.getColumnModel().getColumn(4).setPreferredWidth(70);
tbl_Receita.getColumnModel().getColumn(4).setResizable(false);
tbl_Receita.getColumnModel().getColumn(5).setPreferredWidth(190);
tbl_Receita.getColumnModel().getColumn(5).setResizable(false);
tbl_Receita.getColumnModel().getColumn(6).setPreferredWidth(190);
tbl_Receita.getColumnModel().getColumn(6).setResizable(false);
tbl_Receita.getColumnModel().getColumn(7).setPreferredWidth(70);
tbl_Receita.getColumnModel().getColumn(7).setResizable(false);

Se uma santa alma puder me ajudar nesta implementação fico grato !!!!

Mensagens: 8

Participantes: 5

Ler tópico completo


Viewing all articles
Browse latest Browse all 17410

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>