terça-feira, 30 de agosto de 2016

JTextField com Placeholder ou prompt text

No biblioteca swing do Java, não existe um método nativo que um campo de texto fique com um texto inicial de exemplo ou informação do que se trata aquele campo, e só após digitar, esse texto inicial é apagado. Assim como, ao clicar no campo, o cursor fique posicionado no início do texto.
Esse tipo de recurso, é conhecido como Placeholder ou prompt text. Segue imagem de exemplo:


Vamos aos passos...
1 - Na imagem abaixo, tenho um método no meu frame, que ao clicar no botão Novo, todos os campos do formulário são liberados para preenchimento, no exemplo deixei apenas um campo para simplificar, além de setar o nome inicial, ele deixa a letra na cor cinza claro, e seta o foco, veja:

2 - Na imagem abaixo, quando o foco estiver no textfield, o evento FocusGained() é disparado, e se o texto for o inicial, setamos a posição do cursor antes do texto ( posição 0), e logo em seguida setamos a cor apenas do cursor como preto, veja:



3 - Na imagem abaixo, quando o foco sair do textfield, o evento FocusLost() é disparado, e se o texto estiver vazio, setamos o texto inicial novamente com a cor cinza claro novamente, veja:

 

4 - Por último, na imagem abaixo, ao pressionar qualquer tecla dentro do textfield, o evento KeyPressed é disparado, e se o texto for igual ao inicial, setamos vazio no campo, e setamos a cor preta para o texto.

 

Observação: Esses eventos devem ser feitos individualmente para cada textfield desejado.


segunda-feira, 29 de agosto de 2016

Inserindo objetos como item do JComboBox - Java

1 - Para adicionar objetos no método addItem() de um JComboBox, basta adicionar o método toString() e o método construtor  na classe que deseja adicionar no item, veja:


Acima utilizei atributos públicos apenas para não estender o código com os gets e sets.
__________________________________________________

2 - Em seguida, basta adicionar os objetos no método addItem() do componente JComboBox, veja:






Acima invoco um método que trás uma lista de todas as cidades do banco de dados, logo em seguida percorro essa lista através do for, e a cada cidade da lista vou adicionando no método addItem() do componente JComboBox. Além de adicionar o objeto, apenas o nome da cidade será exibida o combobox, pois definimos isso no método toString() da classe Cidade.
__________________________________________________

3 - Por fim, para pegar o objeto selecionado no item combobox, basta fazer o seguinte:

Cidade cidade = (Cidade) comboxCidade.getSelectedItem();