Mensagens enviadas por: marcobiscaro2112
Índice dos Fóruns » Perfil de marcobiscaro2112 » Mensagens enviadas por marcobiscaro2112
Autor Mensagem
Use o método getGeneratedKeys() de Statement.

http://www.selikoff.net/2008/09/03/database-key-generation-in-java-applications/ (veja a técnica 2)
Quando falei sobre split, me referi a um método que já existe na classe String.

Crie um ArrayList de ArrayList. Depois, para cada linha do arquivo, crie um ArrayList de String (que representa cada linha lida) e coloque os elementos da linha nesse ArrayList. Por fim, adicione o ArrayList linha no ArrayList listas. Seria algo como:
Alguns detalhes que podem ajudar:

A classe StringBuilder tem os métodos length() e deleteCharAt(int index) que podem ser usados para remover o último caractere.

Assim você pode fazer outro append com o nome da tabela e só converter para String quando não for fazer mais nenhuma modificação.
drsmachado wrote:
marcobiscaro2112 wrote:
Na prática, as duas linhas abaixo são equivalentes:


Na prática, a segunda linha lançará exception, pois métodos são chamados com os () ao final e os parâmetros requeridos entre eles.

Sim, esqueci dos parênteses na chamada do método, mas você entendeu a ideia.
Sim, o LookAndFeel altera toda a aplicação.

O problema de usar um JLabel é que ele não recebe eventos como Enter ou o pressionamento da barra de espaço para ativação do evento.

Uma solução possível (não sei se é a mais fácil, mas é a que me vem na mente) é escrever uma classe filha de BasicButtonUI (ou MetalButtonUI) com os métodos paintButtonPressed e paintFocus vazios.

Aí, você faria o seguinte no(s) botão(ões) que você quer desenhar de forma especial:
String é um objeto imutável. Quando você chama o método concat, uma nova String é criada (e isso é muito lento se comparado ao StringBuilder).

StringBuilder serve justamente para concatenar dados (Strings, números, etc.) de uma forma rápida. O método dessa classe que faz isso é o append.

Quando você executa o System.out.println passando um objeto como parâmetro, ele automaticamente chama o método toString dele. Na prática, as duas linhas abaixo são equivalentes:


No seu código, você cria um StringBuilder, converte ele para String, chama o método substring, converte o StringBuilder para String de novo (para resgatar o tamanho) e chama o método concat de String (que é lento). Seu código não está tão otimizado quanto poderia estar.
É que talvez usar imagens para seus botões não seja a melhor maneira de se fazer.

Imagine ter que criar uma imagem diferente para cada botão que for necessário... Além disso, se você precisar trocar o texto do botão, terá que refazer a imagem. Ou pior, se precisar trocar o modelo dos botões terá que refazer todas as imagens de todos os botões!

Além disso, é possível que os botões fiquem inconsistentes com outros controles (exemplo: botões arredondados e barras de rolagem retangulares).

Em Java há suporte para LookAndFeel (a aparência da aplicação). Quando se usa essa funcionalidade, basta trocar o LookAndFeel do programa e todos os controles (botões, radios, checkboxes, caixas de texto, etc.) ficaram consistentes.

Tutorial de L&F: http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/index.html

Uma lista de alguns L&F famosos: http://geeknizer.com/best-java-swing-look-and-feel-themes-professional-casual-top-10/
O construtor de JFormattedTextField pode ser chamado diretamente com um SimpleDateFormat (classe usada para formatar datas) como parâmetro.

Algo como:
Só por curiosidade: você precisa realmente deixar o fundo transparente e sem borda? A imagem que você usa é a imagem de um botão?
Uma pergunta: os atributos de cada linhas são sempre os mesmos 5 (PosX, PosY, PosZ, scaleX e scaleY)?

Se sim, ao invés de usar um ArrayList de ArrayList, crie uma classe com as propriedades que você precisa e use um ArrayList dessa classe.

Assim, no código de leitura do arquivo você faria um laço em todas as linhas e, para cada linha, quebraria o texto em todos os caracteres '#' (use o método split da classe String para isso). Depois, basta definir os atributos da classe a partir desses valores.

Outra pergunta: os números são sempre sequenciais no arquivo (começam do 1 e vão até o total de linhas)? Se sim, não me parece fazer sentido ter essa informação no arquivo, concorda? Para saber qual número é, basta verificar em qual linha está (ou, no caso do seu programa, em qual posição do ArrayList está) o elemento.
Só para constar, outra maneira de fazer (a que uso):



Se a nota for 7.1, por exemplo:

7.1 / 0.5 = 14.2
round(14.2) = 14
14 * 0.5 = 7

Se for 7.4:

7.3 / 0.5 = 14.6
round(14.6) = 15
15 * 0.5 = 7.5

Se for um valor já arredondado (por exemplo 6.5):

6.5 / 0.5 = 13
round(13) = 13
13 * 0.5 = 6.5
Tem certeza que o gargalo não está na conexão com a Internet?

Veja: você disse que testou com 1200 e-mails com anexo e demorou cerca de 25 minutos. Isso significa que foram baixados 48 e-mails com anexo por minuto.

Como eram 50 threads, cada uma levou aproximadamente 1 minuto para baixar 1 e-mail.

Considerando um link que tem taxa de download de 400kB/s, cada thread fica com aproximadamente 8kB/s de taxa de download.

Isso quer fizer que em um minuto (que é o tempo que leva em execução), essa thread baixará cerca de 480kB (um valor razoável para um anexo de e-mail).
Acredito que Java não seja a linguagem para isso.

Para usar Java você teria que:

1. Procurar bibliotecas JNA que permitam acessar esse tipo de informação (informações sobre processos, terminar processos, novo processo, etc.)

2. Usar comandos próprios do S.O. usado para resgatar os dados que você precisa, tratá-los e exibi-los. Exemplo: no Linux, você executaria o comando 'ps aux', trataria os dados e exibiria. Para terminar um processo, executaria 'kill <PID>' e assim por diante.
Acho que é isso que você está querendo, certo? http://download.oracle.com/javase/tutorial/uiswing/components/menu.html#popup
 
Índice dos Fóruns » Perfil de marcobiscaro2112 » Mensagens enviadas por marcobiscaro2112
Ir para:   
Powered by JForum 2.1.8 © JForum Team