Introdução ao Java-Swing
com Netbeans
Introdução
Vamos utilizar o pluging Matisse para criar as interfaces
Para isso criamos uma aplicação Java via Maven
Introdução
Escolha a opção “Novo” ao clicar com o botão esquerdo do mouse Escolheremos a opção “Form JDialog” para iniciar o plugingIntrodução
Hierarquia dos componentes do formulário ativo Palheta de componentes Palheta de propriedades do componentes Podemos configurarqual classe terá o método main()
Introdução
Clique e arraste os componentes para a tela Exemplo utilizando o Nimbus Visualize o design com diferentes look-and-feel (aparências)Introdução
Clique com o botão direito do mouse para acessar os eventos dos componentes As linhas em cinza são protegidas e não podem ser alteradas
Introdução
Você pode personalizar algumaspartes protegidas de código utilizando a aba “Código”
Por exemplo, para centralizar o formulário na tela
Código personalizado
Introdução
Outro exemplo de customização é exibido aqui com o botão, aonde
podemos criar algum algoritmo antes ou depois da criação do
mesmo.
O pluging bloqueia essas partes de código para ser capaz de redesenhar novamente a interface que o usuário criou. As instruções de
Introdução
Outra forma de fazer a customização é clicando com o
botão direito do mouse no
Layouts
Clicando com o direito do mouse em cima do
JDialog podemos definir o layout
Os layouts tentam deixar as telas responsivas para responder as diferentes
Layouts (group layout)
Nesse layout os componentes ficam agrupados/ancorados
uns nos outros
Você controla os grupos para ficarem alinhados/ancorados verticalmente ou
horizontalmente.
Layouts (card layout)
Para esse layout precisamos de um painel configurado
como CardLayout Cada painel interno(card)
deve ter um nome.
Os cards são outros painéis que ficam inseridos dentro do
painel principal.
Por fim, configura-se qual o card estará visível informando o nome.
Deve-se informar também qual o painel que contém os cards.
TextFields
Aperte F2 para renomear o componentes
Aperte F2 para inserir ou limpar o texto padrão do textfield
PasswordFields
Componente responsável por
receber senhas
Temos o password retornado em um array de char.
FormatFields
1) Foi declarado e criado no construtor um formatador de texto2) Com o botão direito do mouse personalizei o construtor para
FormatFields
1) Vamos usar a propriedade “formatterfactory” para
Rótulos (labels)
1) Crie um pacote para armazenar as imagens da sua aplicação
Inserindo imagens
2) Procure a propriedade Icon e clique na reticências 3) Selecione a pasta e depois a imagem desejada4) Atenção: se for um projeto maven, as imagens devem obrigatoriamente ficar dentro
de uma pasta chamada resources no diretório main.
Botões
Use F2 para mudar o texto do botão e use os
eventos conforme sua necessidade.
Atalhos:
-Digite “sout” + <enter> para criar o System.out.println(“”);
-Use as teclas <alt>+<Insert> para chamar o wizard de criação de gets, sets, construtor, equals e hashcode
- O nome do componente é modificado através da propriedade:
Botões (jToggle)
Esse tipo de botão tem a funcionalidade de manter o estado da ação (pressionado/não pressionado).
Botões (radio button e radiogroup)
1) Os Radio buttons podem trabalhar de forma separada 2) Ou em grupo através do componente Radio group 3) Informe qual o grupo o radio pertenceBotões (check box e radiogroup)
Os check boks trabalham da mesma forma que o
radio buttons
O método “isSelect” informa se o checkbox
Painéis
1) O jPanel é um container, assim podemos configurar um laytou para cada painel. Se demos dois cliques emum painel, visualizamos somente ele.
Alguns atalhos:
ctrl + d => duplica um componente
Shift + clique na paleta de componentes => insere vários componentes
2) Um propriedade interessante é a “border”,
aonde pode-se mudar a aparência dos painéis
Painéis (scrooll panel)
1) Quando a tela é pequena para a quantidade de componentes podemos
adicionar um scrollpane.
Alguns atalhos:
Com o botão direito do mouse você tem a opção de “inclose” ou “incluir em” para inserir componentes em um painel.
Menus
1) Primeiro deve existir uma “barra de menu” que
é composta por componentes “menu”
3) Temos outro componente “menu” com
dois “menu item”
2) Temos um “menu item” e um “separador de itens”
Na propriedade mnemônico: basta digitar a letra que também será um atalho junto com a tecla Alt
Menus
1) Dê um duplo clique em cima de “atalho” para
Menus (popup)
1) Adicione um popup menu no dialog, esse não é componente visual, você
conseguira acessá-lo somente pela janela de
hierarquia
2) Adicione os itens de menu através do botão direito do mouse clicando em cima do componentes
jPopupMenu e crie o menu como desejar
3) Selecione o componente que deseja oferecer a opção de menu
e configure sua propriedade responsável por isso.
Menus (popup n formulário)
1) Para adicionar um popup em componentes que não
tem a propriedade “componentPopupMenu” codifique o mouse listener,
nesse caso, no JDialog.
2) Método responsável por abrir o popup na posição x e y do clique
Dialogs (file e color chooser)
3) Para escolhermos cores usamos o JColorChooser 1) Personalizamos o botão de confirmação para seleção do arquivo. 2) Personalizamos o filtro de arquivos para seleção do arquivo.
Internal frames e Desktop panel
1) Em um JFrame deve-se inserir um JDesktopPane 2) Deve-se criar InternalFrames
para serem adicionados e chamados no DesktopPane
3) Alguma propriedades do
Internal frames e Desktop panel
1) Pra maximizar o Jdialog principal, basta colocar o esse abaixo abaixo da chamada do
método initComponent
2) Podemos configurar o que irá acontecer com o Jdialog quando o usuário tentar fechar a janela:
Hide, Dispose, Do_Nothing
Toolkit toolkit = Toolkit.getDefaultToolkit();
Dimension screenSize = toolkit.getScreenSize();
setBounds(0, 0, screenSize.width, screenSize.height);
3) Sublinhar a letra do texto de algum componente representando o atalho Alt
+ “Letra” é feito configurando a propriedade Mnemonic
Treeview
1) Use a propriedade “model” para criar a hierarquia. No wizard, simplesmente use espaço no texto para criar o nível
da hierarquia.
2) Adicionando o listenner para buscar as informações
ComboBox e ListBox
1) Como no treview, o combo e o list box trabalham com
“model” para os dados
2) Além da propriedade “model”, o “selection mode” determina
quantos itens o usuário pode selecionar ao mesmo tempo.
TextArea
1) O componente vem acompanhado de scrollpane, o qual tem as
propriedades “verticalScrollBarPolicy” e “horizontalScrollBarPolicy”
2) Método para recuperar o texto digitado
JSlider
2) No evento no botão é exemplificado como pegar o valor do slider e como adicionar
um listener para ele.
1) Podemos configurar o valor mínimo e máximo
JProgressBar
2) Essa thread simula algum processamento em um sistema
de computador. 1) A propriedade
“stringPainted” foi configurada para true, afim de mostrar o valor do
JSpinner
1) Foi adicionado um stateChanged no componente para recuperar os valores do componentesJTable
1) O componente Jtable também trabalha com o conceito de Modelo, assim, toda a manipulação tem que
ser feito nessa camada.
2) A implementação padrão da classe de modelo do JTable se
JTable
1) Podemos instanciar e configurar o nosso próprio DefaultTableModel
em um construtor
2) Duas colunas e duas linhas
3) Método responsável por obter o valor de uma célula específica.
JTable
1) O DefaultTableModel pode ser configurado visualmente na propriedade
JTable
(evento)
1) Qualquer alteração na tabela dispara o evento ModelListener
JTable
(evento)
1) No construtor também adicionamos o listener para o mouse. Nesse caso,JTable
(listando valores)
1) Configuramos o DefaultTableModel via palheta de propriedades do JTable 2) No construtor, um list foi criado e populado,logo em seguida, adicionamos as linhas
na tabela referente a esse list.
JTable
(formatando as células das colunas)
1) Vamos criar o nosso renderizador de células para o tipo Date, assim os dados podem ser exibidos formatados. O primeiro passo para isso é criar uma
classes estendendo de DefaultTableCellRenderer
2) Clique com o direito em cima da tabela e escolha a primeira opção
3) Instancie um objeto da classe recém criada
JTable
(formatando enumerators)
1) Criando o Enumerator
2) Criando o renderizador
Instancie o renderizador como no slide anterior e teste a aplicação.
JTable
(inserindo imagens)
1) Método responsável por renderizar o componente JLabel
2) Alternamos as imagens de acordo com o valor
Instancie o renderizador como nos slides anterior e teste a aplicação.
JTable
(criando nosso próprio model)
1) Criamos uma classe herdando de AbstractTableModel
2) Temos que implementar os métodos abstratos
JTable
(criando nosso próprio model)
1) Utilizamos um arraylist e array para armazenar respectivamente os dados e
os nomes das colunas
2) Implementamos o último método necessário
JTable
(criando nosso próprio model)
1) Vamos adicionar os métodos abaixo para dar mais opções ao utilizador
JTable
(utilizando nosso próprio model)
1) No construtor informamos nosso modelo
Configurando os look-and-feels
•
Método responsável por configurar a aparência
Obs: Por padrão, o Netbeans configura o Lookandfeel, então apague o código no método main responsável por essa ação.
Configurando os look-and-feels
2) Utilize a classe e os métodos que a documentação do
look-and-feel exige
Utilizando look-and-feels de terceiros (Sem Mavem)
1) Faça o download e importe as bibliotecas
necessários para o projeto
http://www.javafree.org/artigo/871502/
3) Mais exemplos sobre look-and-feels
public static void main(String args[]) { /* Create and display the dialog */
java.awt.EventQueue.invokeLater(new Runnable() { public void run() {
try {
UIManager.setLookAndFeel(new NapkinLookAndFeel()); } catch (UnsupportedLookAndFeelException ex) {
ex.printStackTrace(); }
Tela06 dialog = new Tela06(new javax.swing.JFrame(), true);
dialog.addWindowListener(new java.awt.event.WindowAdapter() { @Override
public void windowClosing(java.awt.event.WindowEvent e) { System.exit(0); } }); dialog.setVisible(true); } }); }
Configurando os look-and-feels
2) Arquivo carregado pelo Pom.xmlUtilizando look-and-feels de terceiros (Sem Mavem)
1) Importe a biblioteca do Napkin no Pom.xml e
recarregue-o
3) Código responsável por iniciar o layout <dependency> <groupId>net.sf.squirrel-sql.thirdparty-non-maven</groupId> <artifactId>napkinlaf</artifactId> <version>1.2</version> </dependency>