Desenvolvedor e Analista de Sistemas | IFPA

quarta-feira, 20 de março de 2013

Teclas de Atalho no Windows 7

com 0 Comentário
Teclas de Atalho no Windows 7

Teclas de atalhos são combinações de duas ou mais teclas que, quando pressionadas, pode ser usadas para executar uma tarefa que requiriria normalmente o uso de um mouse.

Os atalhos podem ajudar a tornar o uso do computador mais fácil, poupando tempo e esforço. Abaixo segue uma lista dos principais atalhos do Windows 7, para ajudar a melhorar a sua produtividade e experiência com esse Sistema Operacional.

Atalho / Descrição
Win + Seta para cima:  Maximiza a janela atual
Win + Seta para baixo: – Restaurar as janelas ou minimizar a atual
Win + Seta para a esquerda: – Encaixe a janela atual para a metade esquerda da tela
Win + Seta para a direita: – Encaixe a janela atual para a metade direita da tela
Win + [número]: – Ativa a execução do programa fixado na barra de tarefas do Windows 7, a execução do programa atual não será afetada.
Win + Home: – Minimizar as janelas, menos a atual.
Win + Space: – Faz todas as janelas transparentes para que você possa ver através do desktop
Win + Pause / Break – Abrir Propriedades do Sistema
Win + Tab: – Aero Flip 3D [pressione Tab para alternar entre o Windows]
Win + B – Move o foco para a bandeja de notificação (à direita da barra de tarefas)
Win + D: – desktop Show / Hide
Win + E – Explorer do Windows é iniciado
Win + F – Procurar
Win + G: – Trazer todos os gadgets no topo e em primeiro plano
Win + L – Bloquear computador
Win + M – Minimizar todas as janelas
Win + P: – Abra o menu de projeção (geralmente utilizado para laptops conectados a projetores)
Win + R: – A linha Execute o comando é iniciado.
Win + S: – OneNote Screen Clipping Tool
Win + T: – Pré-visualização das miniaturas de aplicações no Windows Taskbar, um por um, sem pssar o mouse.
Win + X: – Mobility Center
Win + #: – Quicklaunch
Win + =: – Lupa
Win + [+/-]: – Permite a lupa e zoom in / out
Win + Shift + Seta para cima: – Maximizar o tamanho vertical
Win + Shift + Seta para baixo: – Restaurar tamanho vertical
Win + Shift + Seta para a esquerda: – Ir para o monitor esquerdo
Win + Shift + Seta para a direita: – Ir para a direita do monitor
Win + Shift + M: – Desfazer todas minimização janela
Win + Shift + T: – Ciclos de trás
Win + Ctrl + F – Abre o Active Directory
Ctrl + Seta para a direita: – Mova o cursor para o início da próxima palavra
Ctrl + Seta para a esquerda – Mover o cursor para o início da palavra anterior
Ctrl + Seta para cima: – Move o cursor para o início do parágrafo anterior
Ctrl + Seta para baixo – Mover o cursor para o início do próximo parágrafo
Win + Ctrl + Tab: – Persistente Flip 3D
Ctrl + Shift: – com uma tecla de seta Selecione um bloco de texto
CTRL com qualquer tecla de direção + Barra de espaço: – Selecionar vários itens individuais em uma janela ou no desktop
Ctrl + Shift + Esc: – Abrir o Gerenciador de tarefas diretamente
Ctrl + Shift + N: – Criar nova pasta


Mais informações »

quinta-feira, 14 de março de 2013

Recuperar arquivos apagados do Google Drive

com 0 Comentário

Política de exclusão e recuperação de arquivos

Se um documento ou arquivo for excluído permanentemente do Google Drive, não será possível recuperar o item.
Política de recuperação de arquivos e documentosCaso não consiga encontrar seus itens em Todos os itens, na Lixeira ou realizando uma pesquisa, significa que eles foram removidos permanentemente do Google Drive, tendo sido possivelmente excluídos por outra pessoa.
Se um documento ou arquivo for excluído permanentemente do Google Drive pelo seu proprietário, ou se a conta do proprietário for excluída, não será possível recuperar o item. Também não é possível recuperar documentos ou arquivos após um administrador de domínio do Google Apps excluir a conta de um usuário.
Se você acredita que alguém pode ter obtido acesso não autorizado a seus documentos, sugerimos tomar estas medidas para proteger sua conta.

Dicas para localizar itens no Google Drive

Caso não seja possível localizar um item no Google Drive, não significa necessariamente que o proprietário o excluiu. Veja algumas maneiras de localizar um item:
  • Procure em diferentes opções de classificação do Google Drive, como Última modificaçãoAbertos pela última vez por mim e Título.
  • Pesquise em seu Google Drive. Tente esta opção caso você tenha uma frase relevante para a pesquisa , uma vez que o Google Drive não permite correspondências parciais e não retorna resultados tanto de palavras digitadas incorretamente, quanto de termos de pesquisa muito específicos que não permitem correspondências parciais.
  • Se você não for proprietário do documento ou arquivo, procure no histórico de seu e-mail uma notificação de compartilhamento ou um link para o item. É possível que você tenha cancelado a inscrição desse item em seu Google Drive.
  • Preencha o Solucionador de problemas com documentos ausentes.

Restaurar itens da Lixeira que não foram excluídos permanentemente

Se o proprietário de um documento ou arquivo o moveu para a lixeira e a lixeira não foi esvaziada, o proprietário poderá recuperar o documento ou arquivo.
  1. Acesse drive.google.com
  2. Clique em Lixeira, no painel de navegação da esquerda.
  3. Localize o item que deseja devolver ao Google Drive e marque a caixa ao lado do título.
  4. Clique no menu suspenso Mais.
  5. Selecione Restaurar da lixeira. Essa ação restaura o item para o Google Drive do proprietário, bem como para o Google Drive de qualquer colaborador.
Os leitores, comentaristas e editores não podem recuperar nada, pois eles não têm a possibilidade de descartar ou excluir permanentemente itens dos quais eles não são proprietários. Entre em contato com o proprietário do item para obter acesso a ele novamente ou verifique se o proprietário pode recuperar o item da lixeira.
Mais informações »

Como recuperar arquivos deletados do SkyDrive

com 0 Comentário

A Microsoft adicionou um novo recurso de lixeira em seu serviço de armazenamento na nuvem SkyDrive, o que significa, que agora você pode recuperar arquivos deletados acidentalmente de sua conta no SkyDrive.
Atualmente, a opção de lixeira está disponível somente na interface web do SkyDrive, porém, ele também é capaz de recuperar arquivos que foram excluídos acidentalmente da pasta do SkyDrive em seu computador.

Como recuperar arquivos deletados do SkyDrive

Recuperar arquivos deletados de sua conta do SkyDrive é muito simples. Tudo o que você precisa fazer é acesse a página do SkyDrive e, em seguida, clicar no link da “Lixeira”, no lado inferior esquerdo da página.
Como recuperar arquivos deletados do SkyDrive - Imagem 1
Em seguida, selecione os arquivos que deseja restaurar e clique no link “Restaurar” na parte superior para restaurar os arquivos selecionados. Os arquivos serão restaurados para a mesma pasta que eles estavam.
Como recuperar arquivos deletados do SkyDrive - Imagem 2
Os arquivos armazenados na lixeira não contam como espaço de armazenamento em sua conta, mas se o conteúdo na lixeira ultrapassar 10% do espaço total de sua conta, a Microsoft irá remover arquivos antigos.
Então, se você tem uma conta de 25 GB SkyDrive, você pode manter até 2.5 GB de arquivos deletados na lixeira. Porém, é importante notar que os arquivos deletados permanecem na lixeira por no máximo 30 dias.
Mais informações »

Como Recuperar Arquivos Deletados no Dropbox (Tutorial)

com 0 Comentário

Para recuperar um arquivo deletado da pasta do Dropbox basta acessar a sua conta do serviço, selecionar a aba Files e clicar em Show deleted files.
Os arquivos deletados serão mostrados na cor cinza. Selecione os arquivos que deseja recuperar e clique em Undelete.

Abracs.

Espero que tenha ajudado.
Mais informações »

Bloqueando a página inicial do navegador Internet Explorer

com 0 Comentário

Bloqueando Configurações importantes do Sistema
PÁGINA INICIAL DO INTERNET EXPLORER

► Introdução: Se você tem muita gente que fuça em seu computador então está na hora de manter sua privacidade e até prevenir que eles "estraguem" seu micro, aqui você aprenderá a configurar uma porção de coisas Importantes.

Mais informações »

domingo, 3 de março de 2013

Java - Trabalhando com Datas

com 0 Comentário

Quem nunca teve que manipular datas em algum programa não é um programador poxa… O pior caso na minha opinião são aqueles bancos de dados desgraçados que não aceitam a data no formato padrão. Cá entre nós, é uma encheção de saco ficar invertendo a data. Vamos então a algumas dicas para não haver mais traumas quando o assunto em questão são as datas:
Componentes Swing para trabalhar com datas

Nesse outro post eu mostrei como adicionar ao Netbeans alguns ótimos componentes para quem precisa tratar datas de uma maneira elegante em uma interface bem bonita.
Vale a pena dar uma conferida!

Strings de formatação de datas


Algo que todo mundo deve saber é que em alguns componentes (como os demonstrados no post citado acima) e alguns objetos (que veremos mais adiante) conseguem formatar a data de acordo com uma string, ou seja, mostrar a data em diversos formatos, tais quais definidos por uma string.
Antes de mostrar alguns exemplos vou deixar especificado quais os caracteres que podem compor a string de formatação e o que eles representam.
Segundo a documentação oficial:
LetterDate or Time ComponentPresentationExamples
GEra designatorTextAD
yYearYear1996; 96
MMonth in yearMonthJuly; Jul; 07
wWeek in yearNumber27
WWeek in monthNumber2
DDay in yearNumber189
dDay in monthNumber10
FDay of week in monthNumber2
EDay in weekTextTuesday; Tue
aAm/pm markerTextPM
HHour in day (0-23)Number0
kHour in day (1-24)Number24
KHour in am/pm (0-11)Number0
hHour in am/pm (1-12)Number12
mMinute in hourNumber30
sSecond in minuteNumber55
SMillisecondNumber978
zTime zoneGeneral time zonePacific Standard Time; PST; GMT-08:00
ZTime zoneRFC 822 time zone-0800
Fique a vontade para brincar de combinar esses caracteres para formar a data.
Exemplo:
StringData formatadaComentário
dd/MM/yyyy25/12/2010Padrão brasileiro
MM/dd/yyyy12/25/2010Padrão americano
yyyy-MM-dd2010-12-25Padrão de alguns bancos de dados
dd MMMMMMMM yyyy25 Dezembro 2010Quando tem mais de 2 caracteres ‘M’, o resultado é o nome do mês por extenso
HH:mm:ss:SSSS15:22:54:1264Hora…

O objeto SimpleDateFormat: convertendo datas facilmente


A classe SimpleDateFormat do pacote java.lang.text é uma mão na roda tão grande!! Com um objeto dessa classe a gente pode facilmente converter um objeto java.util.Date para uma String no formato que a gente quiser (através da string de formatação).
Exemplo:
SimpleDateFormat sd = new SimpleDateFormat(“yyyy-MM-dd”);
Date data = new Date(); //data atual
 
System.out.println(sd.format(data));
Do mesmo jeito que dá pra converter um objeto Date pra uma String, o inverso também é válido: o SimpleDateFormat também converte uma String para um Date:
SimpleDateFormat sd = new SimpleDateFormat(“dd/MM/yyyy”);
String meuNiver =13/04/1989;
 
Date data = sd.parse(meuNiver);
Muito muito muito simples, útil e prático!

Comparando datas


Não sei se todo mundo sabe… mas uma data representada pelo objeto Date nada mais é do que um long, um número bem grande que guarda o número de milisegundos que já se passaram desde 1º de Janeiro de 1970, 00:00:00 GMT até o mome
nto atual.
O objeto Date possui alguns métodos para comparar datas, são eles:
Date natal = new Date(110,11,25);        //25/12/2010
Date meuNiver = new Date(110,3,13);  //13/04/1989
 
if (natal.after(meuNiver) || meuNiver.before(natal)) {
    System.out.println("Vou ficar mais velho antes do natal...");
} else if (natal.equals(meuNiver)) {
    System.out.println("Vou ganhar 2 presentes no mesmo dia! :D");
}
O código é totalmente auto-explicativo, exceto pelo construtor meio estranho do objeto Date. Seus parâmetros são: o ano – 1900 , o mês – 1, e o dia.
Os métodos “after(Date)”, “before(Date)” e “equals(Object)” nada mais fazem do que comparar aqueles números que eu comentei ali em cima. Quem não acreditar em mim é só ir no código fonte do método (no Netbeans: Ctrl + clique no método) e verificar que é exatamente isso que acontece:
public boolean after(Date when) {
    return getMillisOf(this) > getMillisOf(when);
}
Um probleminha que me ocorreu esses dias (e deu um trabalhinho) foi: como comparar datas sem envolver as horas, minutos, segundos e milisegundos?
Algumas vezes o horário pode atrapalhar a comparação das datas, uma vez que ela se baseia no número por trás da data. Só para ilustrar o problema segue um exemplinho:
Date inicioNatal = new Date(1293242400000L); //25/12/2010 00:00:00
Date fimNatal = new Date(1293328799999L);   //25/12/2010 23:59:59
 
if (inicioNatal.equals(fimNatal)){
    System.out.println("É natal!!");
}
No construtor dos Date foram passados os números que representam o primeiro e último segundo do natal. O “L” no final é apenas para indicar que aquele número é do tipo long.
Voltando ao problema, no código acima nunca será exibida a mensagem “É Natal!!” pois os números que representam as datas não são iguais.
A alternativa para solucionar esse problema que eu achei (confesso que parece uma gambiarra) foi a seguinte:
SimpleDateFormat sd = new SimpleDateFormat("dd/MM/yyyy");
Date inicioNatal = new Date(1293242400000L); //25/12/2010 00:00:00
Date fimNatal = new Date(1293328799999L);   //25/12/2010 23:59:59
 
inicioNatal = sd.parse(sd.format(inicioNatal));
fimNatal = sd.parse(sd.format(fimNatal));
 
if (inicioNatal.equals(fimNatal)){
    System.out.println("É natal!!");
}
As linhas em negrito são responsáveis por “zerar” as horas, minutos, segundos e milisegundos da data.
Como? Muito simples: como o objeto SimpleDateFormat foi criado com uma string de formatação que não contém horas, minutos ou outros, ele simplesmente ignora essas partes da data na hora de converter uma string para Date. Nós primeiro passamos de Date para string (somente dia/mes/ano) e passamos a string para Date em seguida (sem horas, minutos e etc).
Existem muito mais coisas quando se trata de manipulação de datas, mas como esse post não tem a finalidade de deixar ensinar TUDO de avançado sobre datas, ficamos por aqui.
Mais informações »

Java - Utilizando e formatando datas

com 0 Comentário

Trabalhando com datas
Este artigo resolve uma dúvida muito comum em programadores recém chegados ao Java. Como alterar o formato de uma data, do formato americano para o brasileiro, por exemplo. Outras questões surgem após começar a trabalhar com datas como, por exemplo, comparações entre elas. Tudo isso será demonstrado nesse pequeno tutorial. As explicações estão simples e o código comentado. Dica: Nunca se esqueça de usar as funções da classe java.util.Date para fazer comparações de datas. É mais elegante utilizar os métodos do que a comparação através dos valores dogetTime(). Evita usar os métodos depreciados (deprecated) da Date. A classejava.util.Date está em desuso (ainda não está deprecated), e é altamente recomendado você utilizar um java.util.GregorianCalendar, que é muito mais robusto. Porém, muitas APIs ainda utilizam a Date, o que nos obriga a usá-la. Algumas pessoas ainda preferem a utilização de um long, para guardar a data em milisegundos, já que muitas pessoas não gostam da API do java para datas.
O Formatador
Basicamente usamos uma instância da classe java.text.SimpleDateFormat para converter um objeto Date em diferentes formatos de String, e vice-versa. Para instanciar um transformador, devemos passar o formato que ele irá trabalhar. No exemplo a seguir, o formato brasileiro:
  1. // cria o formatador  
  2. SimpleDateFormat formatador = new SimpleDateFormat("dd/MM/yyyy");  

Você pode utilizar várias letras para indicar diferentes coisas, não precisa ficar só com "d", "m", "y". Você pode encontrar os outros símbolos na documentaçãoda classe. Agora podemos transformar uma string contendo o valor 18/09/1981em um objeto data:
  1. Date data = formatador.parse("18/09/1981");  

E transformar o objeto data de volta em uma string contendo o valor 19810918(note que o formato é outro, apenas como exemplo).
  1. // cria o formatador  
  2. SimpleDateFormat formatador = new SimpleDateFormat("yyyyMMdd");  
  3. // cria a string  
  4. String novoFormato = novoFormatador.format(data);  

Dica: Preste atenção que a classe SimpleDateFormat não se responsabiliza por acessos de threads diferentes em suas funções. Isso significa que você deve ter uma instância dessa classe sendo chamada no máximo por uma thread em um único instante. Para tanto, sincronize o acesso no objeto ou simplesmente não mantenha o objeto como membro de uma classe mas sim como variável local de um método.
Comparações e getTime()
O método getTime() da classe Date é utilizado para retornar o numero de milisegundos que se passaram desde um certo dia (primeiro de janeiro de 1970). Ai vem a tentação de usar a comparação de maior e menor para saber qual data veio antes de qual. Porém é muito mais elegante utilizar os métodosbefore() e after() da mesma classe. Outro método que você pode utilizar é ocompareTo(), que retorna 0 no caso das duas datas serem a mesma, um valor negativo se a data representada pelo objeto na qual o método for chamado vier antes da data argumento e um valor positivo no caso contrário. Para criar um objeto data com a data atual usamos o seguinte código (mais simples do que voce esperava):
  1. // pega o dia de hoje  
  2. Date data = new Date();  

Ou então, e já aproveitando para mostrar o GregorianCalendar:
  1. // um calendar também é criado com a data atual  
  2. GregorianCalendar calendar = new GregorianCalendar();  
  3. Date data = calendar.getTime();  

E por último você pode utilizar o método setTime() para setar um novo valor para seu objeto Date, alcançando a funcionalidade de acrescentar uma hora (ou algum outro valor) com o seguinte tipo de código:
  1. // pega o dia de hoje  
  2. Date data = new Date();  
  3. // adiciona 1000 milisegundos, vezes 60 (um minuto), vezes 60 (uma hora), vezes 1  
  4. data.setTime(data.getTime() + 1 * 60 * 60 * 1000);  

Dica: Para saber se um objeto de tipo java.util.Date é o dia de hoje não basta utilizar os métodos before()after() ou compareTo, pois eles comparam até os milisegundos. Para atingir tal objetivo crie uma string a partir do objeto data, extraindo somente o dia, mês e ano e compare essa string com uma outra string representando a outra data que deseja comparar. Se você vai utilizar muito este tipo de modificação nas datas, recomendo muito que você utilize ojava.util.GregorianCalendar. Utilize Date apenas se você realmente precisa, já que outra class trabalha com ela. Utilizando um GregorianCalendar, você pode extrair a data dele utilizando o getTime(), devolvendo um Date, como visto na listagem anterior. Você pode baixar um programa de demonstração com este tutorial. Este arquivo java pode ser compilado e rodado:
  1. java ExemploData dataOriginal formatoOriginal formatoFinal  
Mais informações »

Java - Adicionando Máscara no JCalendar e JDateChooser

com 0 Comentário
Bem, como publiquei em uma outra postagem como utilizar a classe JCalendar e JDateChooser, irei mostrar como adicionar a máscara:

  1. JDateChooser dc = new JDateChooser( "dd/MM/yy" , "##/##/##" , ' ' );  


Abracs.

Qualquer dúvida, postem nos comentários.

by Anderson M. Neto
Mais informações »

Java - Exemplo de Matriz: mudando a cor, fonte, alinhamento, etc… de células de JTable

com 0 Comentário

Ae galera,
Hoje vou dar uma dica bem interessante pra manipular as células de uma JTable.
Vamos imaginar que devemos representar uma matriz dentro de uma JTable, ou seja, devemos ter um cabeçalho para as linhas e outro para as colunas.
Nosso objetivo vai ser construir a seguinte matriz:
Vamos começar definindo as colunas dessa tabela:
String colunas[] = {“”,”A”,”B”,”C”};
Como a primeira coluna da tabela vai servir para representar o cabeçalho das linhas, então a primeira coluna fica sem nome.
Agora vamos definir a matriz de dados, lembrando que a primeira coluna será o cabeçalho ainda:
String dados[][] = {{"A","0","1","0"},{"B","1","0","1"},{"C","0","1","0"}};
Agora que temos todos os dados necessários, vamos completar a tabela:
jTable.setModel(new DefaultTableModel(dados,colunas));
Obs: estou supondo que a tabela já foi instanciada e que seu nome seja “jTable”.
Pronto, agora a tabela está criada, porém ela não parece uma matriz ainda:

Um pouco de teoria: o Java utiliza uma classe chamada TableCellRenderer para definir as propriedades de cada célula (cor de fundo, fonte, alinhamento, entre outras). Essa classe mostra a tabela como nós estamos acostumados a ver, porém se nós quisermos personalizar as células, nós devemos criar a nossa própria classe TableCellRenderer, para tal, devemos criar uma classe que herda de DefaultTableCellRenderer.
Como nossa finalidade é muito simples (apenas mudar a cor e o alinhamento), vamos criar o nosso objeto em tempo de execução mesmo:
DefaultTableCellRenderer letras = new DefaultTableCellRenderer() {
 
    public void setValue(Object value) {
        setBackground(new Color(238, 238, 238));
        setForeground(Color.BLACK);
        setHorizontalAlignment(JLabel.CENTER);
 
        //outras alterações entram aqui...
        super.setValue(value);
    }
};
Acabamos de criar o objeto letras, que é do tipo DefaultTableCellRender e reescrevemos o método setValue(Object value).
É dentro desse método que a mágica acontece: como estamos criando um objeto que define as propriedades de uma célula, basta alterá-las e consequentemente alterar a(s) célula(s).
Já com o nosso próprio objeto DefaultTableCellRender criado, basta atribuí-lo à célula desejada. No nosso caso, como queremos modificar todas as células de uma mesma coluna, vamos setar o nosso DefaultTableCellRender para todas as células de uma coluna:
TableColumn tc = jTable.getColumn("");
tc.setCellRenderer(letras);
TableColumn é a classe que controla todas as células da coluna, portanto se setarmos o nosso próprio DefaultTableCellRender como CellRenderer dela, todas as células daquela coluna vão ser personalizadas.
Para recuperar uma TableColumn usa-se o método getColumn(Object id) da JTable, onde id é o que está escrito no cabeçalho da coluna. Como definimos anteriormente que a primeira coluna seria “” , recuperamos ela do mesmo jeito.
Até aqui agente tem a seguinte tabela:
Já está bem mais parecida com uma matriz, mas só para dar uma melhorada no visual, vamos centralizar as colunas dos dados também. Para isso precisamos definir um outro DefaultTableCellRender que só centralize o texto nas células:
DefaultTableCellRenderer numeros = new DefaultTableCellRenderer() {
 
    public void setValue(Object value) {
        setHorizontalAlignment(JLabel.CENTER);
        super.setValue(value);
    }
};
 
jTable.getColumn("A").setCellRenderer(numeros);
jTable.getColumn("B").setCellRenderer(numeros);
jTable.getColumn("C").setCellRenderer(numeros);
Pronto! Agora ficou igual uma matriz mesmo:

Obs: aqui eu fiz a tabela inteira estática só para facilitar o exemplo, mas nada impede que você personalize uma tabela com dados vindos de outra fonte (entrada, banco de dados…), a idéia é sempre a mesma.
É isso ai pessoal…
Qualquer duvida, dica ou seja lá o que for, posta um comentário ae… ^^
Até a próxima…
Mais informações »

Java - Abrindo um menu popup ao clicar em um botão

com 0 Comentário

Mas vamos ao que interessa: às vezes pode ser bem interessante abrir um menu popup ao clicar em um botão da sua aplicação, como por exemplo em uma tela de cadastro de contas a pagar. A conta a pagar pode estar vinculada a um fornecedor, a um equipamento, a um veículo ou seja lá o que for que você o cliente queira.
Uma boa prática que eu gosto de usar é sempre deixar o usuário poder fazer uma busquinha rápida pelo fornecedor (equipamento, veículo, …) ao invés de ter que digitar o código dele lá.
Sendo assim, ao invés de fazer um botão para a busca de fornecedores, outro botão pra busca disso e outro pra busca daquilo, eu faço apenas um botão que quando clicado abre um menu com todas as opções e frescuras que eu quiser.
Muito mais simples neh… então mãos a obra: crie um novo projeto na sua IDE, adicione um JFrame e coloque um JTextField e um JButton nele (um iconezinho sempre eh legal neh… iauhiauaihu), fica +/- assim:
O meu JTextField vai se chamar jTF_Texto e o JButton vai ser jB_Busca, fique a vontade para dar os nomes mais convenientes.
Para abrir o menu popup usa-se o JPopupMenu, que nada mais é do que um JMenu que aparece em tempo de execução e por cima dos outros componentes. Ou seja, os itens que vão estar dentro do menu popup são os mesmos do menu estático: JMenuItem, JCheckBoxMenuItem e etc.
Quando o usuário clicar no botão agente cria o JPopupMenu e os JMenuItems dinamicamente, portanto podemos escrever o código tanto no evento de ActionPerformed quanto em algum de mouse. Eu vou escrever no MouseClicked:
private void jButton1MouseClicked(java.awt.event.MouseEvent evt) {
 
    //cria o primeiro item do menu e atribui uma ação pra ele
    JMenuItem item1 = new JMenuItem("Opção 1");
    item1.addActionListener(new ActionListener() {
 
        public void actionPerformed(ActionEvent e) {
            jTF_Texto.setText("Clicou na Opção 1");
        }
    });
 
    //cria o segundo item do menu e atribui uma ação pra ele
    JMenuItem item2 = new JMenuItem("Opção 2");
    item2.addActionListener(new ActionListener() {
 
        public void actionPerformed(ActionEvent e) {
            jTF_Texto.setText("Clicou na Opção 2");
        }
    });
 
    //cria o terceiro item do menu e atribui uma ação pra ele
    JMenuItem item3 = new JMenuItem("Opção 3");
    item3.addActionListener(new ActionListener() {
 
        public void actionPerformed(ActionEvent e) {
            jTF_Texto.setText("Clicou na Opção 3");
        }
    });
 
    //cria o menu popup e adiciona os 3 itens
    JPopupMenu popup = new JPopupMenu();
    popup.add(item1);
    popup.add(item2);
    popup.add(item3);
 
    //mostra na tela
    popup.show(jB_Busca, 10, 10);
}
O código é totalmente auto-explicativo nao eh… ainda mais com alguns comentarios… hehe
Talvez a única parte diferente seja mostrar o menu: o método show(…) da classe JPopupMenu é o responsável por jogar o menu por cima dos outros componentes, e pra isso, ele precisa saber em cima de quem ele vai aparecer… então é só passar para ele uma referencia do nosso botão. Os outros dois parâmetros são as coordenadas X,Y que o menu vai ser desenhado, sendo que a coordenada 0,0 é a mesma coordenada 0,0 do botão. Só pra dar um efeito mais bonitinho, eu desloquei 10 em X e 10 em Y:
Bem simples não?…
Dúvidas é só postar, twittar…
Para quem quiser o código fonte desse exemplo, é só pegar o Projeto do NetBeans.
Mais informações »

Total de visualizações