Olá, eu tenho uma Jtable (abstracttablemodel) e as linhas dela tem que ser editaveis, no caso isThisCellEdited tem q retornar true, e preciso fazer uma subtração do valor que eu coloquei nas celulas da tabela, com a quantidade que esta no banco de dados.
por Ex: eu coloco 50 na coluna azul e quando aperto o botao gerar ele tem que subtrair esses 50 por 20 q ja está no banco de dados.
Quais metodos devo inserir??
É só implementar o método setValueAt.
Nossa, finalmente encontrei vc vini hahaha, mandei ate msg na pag do face.
é o seguinte. na tabela, tem varias linhas, e 4 colunas que precisam fazer a subtração com o BD.
eu tenho que usar um for no metodo setvalueAT? pra percorrer as linhas e colunas?
[quote=shurtup]Nossa, finalmente encontrei vc vini hahaha, mandei ate msg na pag do face.
é o seguinte. na tabela, tem varias linhas, e 4 colunas que precisam fazer a subtração com o BD.
eu tenho que usar um for no metodo setvalueAT? pra percorrer as linhas e colunas? [/quote]
Veja, existem coisas diferentes:
a) O TableModel, que descreve como seus objetos de negócio são exibidos na tabela. Ele também descreve como um valor inserido na tabela deve afetar esses objetos;
b) Os seus objetos de negócio, que implementam lógica de negócio
c) Suas classes de persistência.
Não é papel do JTable ou do TableModel fazer essa subtração. Esse papel é das classes de negócio. No caso, ao pressionar o botão gerar, você só deveria pegar o List que está por trás do JTable e rodar nele alguma lógica de negócio. Algo como:
List<SuaClasse> objetos = seuModel.getObjetos();
for (SuaClasse objeto : objetos) {
objeto.calcular();
}
daoDaSuaClasse.salvar(objetos);
seuModel.fireTableDataChanged();
Sobre o face, não atendo usuários por lá. As mensagens que me mandam lá são simplesmente ignoradas.
Entendi vini, desculpe-me hhaaha, sou bem iniciante no java e to a mais de 2 semanas tentando fazer isto.
Agora entendi, pensei que tinha algum metodo que fazia exatamente oq queria. mas agr entendi.
Esse for ai, so preciso colocar no meu botao chamando o metodo calcular ne?
[quote=shurtup]Entendi vini, desculpe-me hhaaha, sou bem iniciante no java e to a mais de 2 semanas tentando fazer isto.
Agora entendi, pensei que tinha algum metodo que fazia exatamente oq queria. mas agr entendi.
Esse for ai, so preciso colocar no meu botao chamando o metodo calcular ne?[/quote]
Esse código iria no método do botão. O calcular estaria no seu objeto.
Fica difícil te ajudar se você não mostrar nada do seu código. Como está implementado o TableModel, qual é a sua classe de negócios, etc.
Vini, mexi em algo e nao sei voltar mais,
minha tabela nao esta mais colocando o nome das colunas. ela carrega o conteudo do banco de dados, mas as colunas n tem os nomes
[code]public void preencherTabela() throws SQLException{
ArrayList dados = new ArrayList();
String [] Colunas = new String[]{“Ref”, “Nome”, “Azul”, “Lilás”, “Rosa”, “Verde”};
conexao bd = new conexao();
Connection Conn = bd.abrirBDConn();
Statement statement = (Statement) Conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_READ_ONLY);
try{
ResultSet st = statement.executeQuery("select * from mappingbabybd.bolsa inner join cores on bolsa.ref = cores.bolsa_ref");
while (st.next()) {
dados.add( new Object[] {
st.getString("ref"),
st.getString("nome"),
st.getString("azul"),
st.getString("lilas"),
st.getString("rosa"),
st.getString("verde"),
});
}
}
catch (Exception erro){
JOptionPane.showMessageDialog(null, "Erro ao adicionar na tabela");
erro.printStackTrace();
}
ProdutoTableModel modelo = new ProdutoTableModel(dados, Colunas);
tabela.setModel(modelo);
}[/code]
Geralmente o nome das colunas não aparece quando você esquece de colocar a tabela dentro de um JScrollPane.