quinta-feira, 6 de dezembro de 2007

Chamar um programa externo

Para fazer a chamada de um programa faça assim:

// Chama o firefox e passa como parâmetro uma página inicial
try {
Runtime.getRuntime().exec("firefox http://netbeando.blogspot.com");
} catch (IOException ex) {
System.out.println("Erro!");
}

Bom, pelo menos fazendo assim no Linux funciona :-)

Maneira simples de adicionar ano(s) em uma data

Uma forma bem simples de adicionar "n" anos a uma data é utilizando a rotina abaixo de uma classe estática, por exemplo:


// Classe estática
public class Utilitarios {
public static Date addYears(Date date, int years) {
Calendar newDate = Calendar.getInstance();
newDate.setTime(date);
newDate.add(Calendar.YEAR, years);
return newDate.getTime();
}
}

E a utilização dentro de uma classe sua fica algo do tipo:

Utilitarios.addYears(new Date(), 5);

Dessa forma foram adicionados 5 anos na data de hoje.

[]´s

NetBeans 6.0 (versão final, até a próxima...)

No dia 03/12/2007 foi liberada a versão 6.0 do NetBeans, finalmente, estava esperando por ela desde o início do ano... como a paciência foi pouca acabei utilizando as betas e as releases candidates, com alguns pequenos bugs mas sem maiores problemas.

Acabei de baixar essa versão e instalar, o instalador (desde a RC 1) ficou realmente muito bom, agora você pode baixar a versão full e instalar apenas o que utiliza realmente e se futuramente precisar utilizar outro pacote basta executar novamente o instalador e selecionar o pacote necessário.

No meu caso ele já reconheceu que o Glassfish estava instalado e não reinstalou, perfeito.

De resto, tudo funcionando a contento, abri os meus projetos nessa versão e todos foram executados sem problemas.

Agora é só aproveitar o bean binding que tá show de bola.

Uma coisa interessante é que utilizo o NetBeans no Ubuntu 7.10, na RC 1 e RC 2 ocorreram vários problemas em telas que possuiam JCombobox, no site netbeans.org existia um chamado aberto informando do problema, mas pelo que eu me lembro o técnico informou que era relacionado apenas com o Ubuntu e que não se tratava de um problema específico do NetBeans, bom, não sei se eles acabaram arrumando no NetBeans mesmo julgando que o problema não era com eles, só sei que agora está funcionando sem problemas. Nas RC1 e RC2 para contornar esse problema eu acabei executando o NetBeans com o parâmetro "--ui javax.swing.plaf.metal.MetalLookAndFeel", isso faz com que seja mudada a aparência da IDE, resolveu o problema dos JCombobox nessas versões, agora, acabei deixando esse parâmetro na chamada do NetBeans porque me acostumei com o visual :-) acho até que melhorou a quantidade de informações que se consegue visualizar na tela, pois me parece que a fonte utilizada é menor.

T+

sábado, 1 de dezembro de 2007

Mensagem: detached entity passed to persist

Essa mensagem estava ocorrendo em um formulário utilizando JPA TopLink, sempre que eu tentava inserir um segundo registro em sequencia, procurando por uma solução encontrei a seguinte:

http://javanotepad.blogspot.com/2007/05/ive-found-bug-in-hibernate.html

Se você está com preguiça de ler eu vou resumir :-)

O problema ocorre porque após ocorrer algum problema ao tentar salvar o registro o sistema tenta persistir o mesmo objeto persistido anteriormente, pra mim resolveu inserindo a linha que está em negrito:

Funcionarios f = new admconvenios.Funcionarios();
entityManager.persist(f);
f.setCodigo(null);

sexta-feira, 30 de novembro de 2007

Criar formulário com Jtable populado de uma classe com JPA

1.Criar o Jframe (ou similar)
2.Inserir o Jtable
3.Inserir o componente EntityManager
4.Inserir o componente Query, relacionar com o EntityManager inserido anteriormente e preencher a propriedade query com o select no formato jpa, exemplo: SELECT c FROM Clientes c
5.Inserir o componente List e relacionar com o componente Query, marque também a propriedade Observable como true
6.Selecione a opção Bind/Elements do Jtable (clicando com o botão direito sobre o componente)
7.Na opção Bind Source relacione com o componente List e clique no botão Ok
8.Clique novamente com o botão direito sobre o Jtable e selecione a opção Table Contents, na guia Table Model com a opção Bound selecionada, relacione o campo Bind Source com o componente List
9.Acesse a guia Columns e adicione as colunas necessárias, informando no campo Expression da seguinte forma, exemplo: ${codigo} ou ${nomeCompleto}, o nome do campo segue o mesmo padrão utilizado pelo JPA, clique no botão Close.

E caso você ainda não saiba, pode dar um get dos dados persistidos assim:

int codigo = ((Clientes)list1.get(jTable1.getSelectedRow())).getCodigo();
String nomeCompleto = ((Clientes)list1.get(jTable1.getSelectedRow())).getNomeCompleto();

Formatar campo JformattedTextField com uma máscara

http://javafree.org/javabb/viewtopic.jbb?t=9220#52048

Resolver problema de conexão do sistema web com o banco de dados

Ao tentar executar um webapplication com conexão com banco de dados, em uma tela de login por exemplo, ocorre erro de conexão, para resolver esse problema basta (estou utilizando MySQL):

copiar do diretório:

\ide8\modules\ext\mysql-connector-java--bin.jar

para o diretório:

\domains\{domain_name}\lib\

Esta dica foi retirada do site netbeans.org (inssue 119278)


Outra coisa, mesmo eu tentando fazer a conexão com o banco de dados MySQL e esse driver estando no diretório indicando acima não foi possível realizar a conexão, por que? Simplesmente por que é necessário que o arquivo derbyclient.jar esteja lá também... vai entender....(????), mas basta inserir esse arquivo (derbyclient.jar) no diretório \domains\{domain_name}\lib\ que tudo funciona.

Bind de campo texto com tipo de dado data

Clicar com o botão direito sobre o componente e escolher a opção propriedades, clicar na opção “Binding” e fazer o bind com a propriedade value (e não text), o resto é igual como se estivesse utilizando a propriedade text.