Carregar uma jTable

16 respostas
A

Bom pessoal aguem pode me dar uma luz de como posso carregar uma jTable usando o Hibernate....uma combo eu consegui mas uma jTable tá dificil....e só mais uma coisa como posso selecionar uma linha da tabela p/ exclui-la ou edita-la...

estou carregando a combo da seguinte forma...

DAO<Reguladora> dao = new DAO<Reguladora>(Reguladora.class);
dao.setSession(HibernateUtil.openSession());

for (Reguladora reg : dao.getList())
jComboBoxReg.addItem(reg.getRazao());

16 Respostas

Marky.Vasconcelos

A tarde eu posto uma tabela que eu fiz com essa funcionalidade.

Agora to sem meu projeto aqui.

Marky.Vasconcelos

Eu tenho uma solução que criei para usar com projetos meus, esta aí.

Com esse código.

OptionTable&lt;Reguladora&gt; ot = new OptionTable(new FieldResolver[] {
				new FieldResolver(Reguladora.class, "razao", "Razão Social"),
				new FieldResolver(Reguladora.class, "cnpj", "CNPJ"),
				new FieldResolver(Reguladora.class, "endereco",
						"Endereço"),
				new FieldResolver(Reguladora.class, "contato",
						"Contato") }, dao.getList());

		ot.setOptionTexts("Abrir", "Deletar");

		ot.addObjectSelectListener(new ObjectSelectListener() {
			@Override
			public void notifyObjectSelected(SelectEvent e) {
				if (e.getAction() == OptionTable.OPTION_1) {
					// Caso caia nesse if significa que o botão Option1 foi pressionado
					// No nosso caso o botão Abrir
				}
				if (e.getAction() == OptionTable.OPTION_2) {
					//Botão Deletar
					DAO&lt;Reguladora&gt; dao = DaoFactory.getDAO(Reguladora.class);
					dao.beginTransaction();
					dao.delete(e.getObject());
					try {
						dao.commit();
					} catch (Throwable e1) {
						e1.printStackTrace();
					}
				}
			}

		});

Voce cria uma tabela com os botões Abrir e Deletar.

Voce precisa dos sources abaixo pra funcionar.
Ou então adicionar o Jar no Classpath.

A

e eu posso declarar esse código quando a janela é ativada?

Marky.Vasconcelos

Sim coloca no evento de um botão.

A

q q tem de errado nesse código...

OptionTable<Semen> ot = new OptionTable(new FieldResolver[]{
    new FieldResolver(Semen.class, "id","Código")    
    }, dao.getlist());
    ot.setOptionTexts("Abrir", "Deletar");
    ot.addObjectSelectListener(new ObjectSelectListener() {
        @Override
        public void notifyObjectSelected(SelectEvent e) {
            if(e.getAction() == OptionTable.OPTION_1){
                
            }
        }  if (e.getAction() == OptionTable.OPTION_2){
            DAO<Semen> dao = DaoFactory.getDAO(Semen.class);
            dao.beginTransaction();
            dao.delete(e.getObject());
            try{
                dao.commit();
            }catch(Throwable e1){
                e1.printStackTrace();
            }
                   
        }
    })
Marky.Vasconcelos
OptionTable<Semen> ot = new OptionTable(new FieldResolver[]{   
    new FieldResolver(Semen.class, "id","Código")       
    }, dao.getlist());

O ultimo parametro ‘dao.getList()’ tem que ser uma List do mesmo tipo, no caso Semen

A

tá dando os seguintes erros…

na linha dao.getlist()“não pode achar simbolo”

na linha @Override “método não se sobrepõem a um método de sua superclasse”

na linha DAO dao = DaoFactory.getDAO(Semen.class); “não pode acha simbolo”…

marcos entra no msn q fica mais facil…alex

Marky.Vasconcelos

To no trampo não posso entra no MSN.

Então… eu esqueci outra coisa precisa adiconar o conteudo disso em um Container.

Com o exemplo da reguladora.

JFrame frame = new JFrame("Reguladora");
OptionTable&lt;Reguladora&gt; ot = new OptionTable(new FieldResolver[] {
				new FieldResolver(Reguladora.class, "razao", "Razão Social"),
				new FieldResolver(Reguladora.class, "cnpj", "CNPJ"),
				new FieldResolver(Reguladora.class, "endereco",
						"Endereço"),
				new FieldResolver(Reguladora.class, "contato",
						"Contato") }, dao.getList());

		ot.setOptionTexts("Abrir", "Deletar");
frame.setContentPane(ot.getContent);

		ot.addObjectSelectListener(new ObjectSelectListener() {
			@Override
			public void notifyObjectSelected(SelectEvent e) {
				if (e.getAction() == OptionTable.OPTION_1) {
					// Caso caia nesse if significa que o botão Option1 foi pressionado
					// No nosso caso o botão Abrir
				}
				if (e.getAction() == OptionTable.OPTION_2) {
	//Se quiser aqui faz perguntas para confirmar se quer mesmo deletar				//Botão Deletar
					DAO&lt;Reguladora&gt; dao = DaoFactory.getDAO(Reguladora.class);
					dao.beginTransaction();
					dao.delete(e.getObject());
					try {
						dao.commit();
					} catch (Throwable e1) {
						e1.printStackTrace();
					}
              //Se quiser aqui pode deixar o frame invisivel ou deixar aberto para receber mais ações.
				}
			}

		});
frame.pack();
frame.setVisible(true);

Usando no meu sistema fica como a figura.


A

eu estou colocando na propriedade windowActived do jFrame…

Marky.Vasconcelos

Não esta abrindo?

Olha no meu código como eu faço.

public void chooseOptions() {
		FieldResolver num = new FieldResolver(Cotacao.class, "id", "Número");
		FieldResolver data = new FieldResolver(Cotacao.class, "data", "Data");
		data.setFormatter(Genesis.DATE_FORMATTER);
		FieldResolver emp = new FieldResolver(Cotacao.class,
				"remetente.razaoSocial", "Empresa");
		FieldResolver val = new FieldResolver(Cotacao.class, "total", "Valor");
		FieldResolver destino = new FieldResolver(Cotacao.class, "destino",
				"Destino");
		FieldResolver[] cotResolvers = { num, data, emp, val, destino };
		OptionTable<Cotacao> ot = new OptionTable<Cotacao>(cotResolvers,
				new DaoListPaginator<Cotacao>(dao, Order.desc("id"), 25));
		
		ot.addOptionButton(new OptionButton(new JButton("Abrir"), 0));
		ot.addOptionButton(new OptionButton(new JButton("Deletar"), 1));
		ot.addOptionButton(new OptionButton(new JButton("Salvar"), 2));
		ot.addOptionButton(new OptionButton(new JButton("Voltar"), 3));
		
		ot.addObjectSelectListener(new ObjectSelectListener() {
			@Override
			public void notifyObjectSelected(SelectEvent e) {
				System.out.println(e.getAction() + ":" + e.getObject());
			}

		});
		JFrame frame = new JFrame("Cotações");
		frame.setContentPane(ot.getContent());
		frame.pack();
		frame.setLocationRelativeTo(null);
		frame.setVisible(true);
	}

//Mais simplificado só para entender.

Aquela parte de addOptionButton é uma coisa nova que mudei hoje… agora da pra adicionar quantos botões quiser na tela e no retorno o Action vai ser o int passado no construtor.

Mas voce pode usar da forma antiga… é só pra voce ter uma idéia.

A

mas onde eu boto esse código?

A

e tá dando erro nessa linha aqui ó…“DAO dao = DaoFactory.getDAO(Semen.class);” tá disendo q daofactoty cano find symbol…

Marky.Vasconcelos

Isso é como instancia a classe DAO
substitua por

DAO<Semen> dao = new DAO<Semen>(Semen.class);
dao.setSession(HibernateUtil.openSession);

E aquele código voce pode colocar no evento de um menu no evento de um botao ou aonde voce quiser chamar essa tela.

A

deu certo agora mas quando vou excluir dá o seguinte erro…

Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1
Marky.Vasconcelos

Agora a questão está aqui:

DAO<Semen> dao =  new DAO<Semen>(Semen.class);   
dao.setSession(HibernateUtil.openSession());
                    dao.beginTransaction();   
                    dao.delete(e.getObject());   
                    try {   
                        dao.commit();   
                    } catch (Throwable e1) {   
                        e1.printStackTrace();   
                    }

Esse problema está no MySql.
E não sei como arrumar.

A

Marcos como q eu faço a seguinte implementação…

eu quero digitar um código em um jtextfield dae quando verdadeiro ele retorna os dados em outra textfield e se não existir ele dá um excessão…

Criado 3 de dezembro de 2008
Ultima resposta 4 de dez. de 2008
Respostas 16
Participantes 2