AbstractTableModel - Operaçoes

7 respostas
S

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??

7 Respostas

ViniGodoy

É só implementar o método setValueAt.

S

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?

ViniGodoy

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?

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.

S

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?

ViniGodoy

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?

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.

S

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

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);

	}
ViniGodoy

Geralmente o nome das colunas não aparece quando você esquece de colocar a tabela dentro de um JScrollPane.

Criado 19 de março de 2015
Ultima resposta 23 de mar. de 2015
Respostas 7
Participantes 2