Buscar

003-001_Swing_Parte_1_14082019

Prévia do material em texto

1
Os Objetos Visuais do 
Swing
2
Os Objetos Visuais do Swing
• Os Objetos dos Container
• A classe JFrame
• Algumas Modificações 
em JFrame
• A classe JLabel
• A classe JTextField
• A classe JPasswordField
• A classe JTextArea
• A classe JButton
• A classe JPanel
• A classe JTabbedPane
• A classe JSplitPane
• A classe JSlider
• A interface ChangeListener
• A classe JScrollPane
• A classe JScrollBar
• A classe JDialog
• A classe JOptionPane
Os Objetos Visuais do Swing
Prof. Gerson Rubin / Prof. Pedro 
L. S. Serra
3
GUI – Graphical User Interface
As regras de usabilidade e o protótipo de tela devem
ser definidos antes do desenvolvimento.
Várias estratégias para implementação.
Valida as entradas do usuário (formatação de 
campos).
Informa aos usuários sobre problemas no sistema
(erros de rede, indisponibilidade dos servidores).
Responde a eventos do usuário (clique do mouse, 
arrastar e soltar, mudança de campo).
A criação de telas com swing pode ser um trabalho
cansativo. É recomendado que se utilize uma
ferramenta para a criação de telas profissionais.
5
Os Objetos dos Containers
• Um Container é um objeto visual ao qual é possível 
acrescentar outros objetos.
• O próprio Container pode ser instalado no interior de um 
objeto.
• A classe JComponent do javax.swing deriva de Container
do java.awt e todos os objetos visuais do swing derivam de 
JComponent, sendo também subclasses de Container.
• JFrame é uma classe do pacote javax.swing que substituiu 
Frame do java.awt e não é derivada de JComponent.
• JFrame é uma estrutura multicamada e permite muitos 
outros recursos não suportados pela classe Frame.
• JFrame permite a contenção de outros objetos derivados de 
JComponent: JApplet, JWindow, JDialog e 
JInternalFrame.
6
Os Objetos dos Containers
Hierarquia de Componentes
A classe JComponent do 
javax.swing deriva de 
Container do java.awt. 
Todos os objetos visuais do 
swing derivam de 
JComponent, sendo também 
subclasses de Container.
7
Os Objetos dos Containers
Hierarquia de Componentes
A classe JComponent do 
javax.swing deriva de 
Container do java.awt. 
Todos os objetos visuais do 
swing derivam de 
JComponent, sendo também 
subclasses de Container.
8
Pacotes AWT e Swing
• As classes Frame, Color e Dimension 
fazem parte do pacote AWT.
• As classes do swing são extensões 
do pacote AWT.
• A API do Swing traz uma série de 
componentes visuais prontos para 
uso: 
• Campos de texto e botões. 
Checkboxes, labels, tabelas.
9
A Classe JFrame
• É a base sobre a qual serão desenvolvidas as interfaces 
visuais de usuário (GUI).
• Exemplo 8_1:
import javax.swing.*;
public class Exemplo8_1 extends JFrame
{
Exemplo8_1()
{
setTitle("Descobrindo 
JFrame");
setBounds(200,150,400,300);
setVisible(true);
}
public static void main(String arg[])
{
new Exemplo8_1();
}
}
Posição x,y, largura e altura
do Frame
10
A Classe JFrame
• É a base sobre a qual serão 
desenvolvidas as interfaces visuais de 
usuário (GUI).
• public class Exemplo8_1 extends Jframe
• A palavra chave Extends permite realizar o 
principio da Herança que é um princípio da 
POO que permite a criação de novas classes a 
partir de outras previamente criadas. 
11
A Classe JFrame
• A API do Swing traz uma série de 
componentes visuais prontos para uso. São 
campos de texto, botões, checkboxes, 
labels, tabelas, árvores e muitos outros.
JButton button = new JButton("OK:");
JTextField textField = new JTextField(20);
JPanel panel = new JPanel();
panel.add(button);
panel.add(textField);
12
A Classe JFrame
• A API do Swing traz uma série de 
componentes visuais prontos para uso. São 
campos de texto, botões, checkboxes, 
labels, tabelas, árvores e muitos outros.
JLabel label = new JLabel("Seu nome:");
JTextField textField = new JTextField(20);
JPanel panel = new JPanel();
panel.add(label);
panel.add(textField);
Prof. Gerson Rubin / Prof. Pedro 
L. S. Serra
13
A Classe JFrame
Exemplo8_2
A classe Color pertence ao pacote 
java.awt, o qual é importado no início do 
programa. 
A modificação da cor de fundo em um 
JFrame deve ser feita sobre o painel de 
conteúdos e permite então que seja 
aplicado o método, conforme segue:
getContentPane ( ).setBackground(Color.orange)
14
Algumas modificações em JFrame:
• O painel apresentado pela execução da classe JFrame assume, por default, o 
modelo do sistema operacional em que ele está instalado.
• É possível, no entanto, alterar alguns detalhes desse padrão fazendo a 
chamada ao método:
getRootPane( ).setWindowDecorationStyle( 
JRootPane.FILE_CHOOSER_DIALOG );
Exixtem nove constantes que alteram a aparência do quadro.
• No caso “(JRootPane,NONE)” ou o valor numérico (0), a janela vai ficar com a 
aparência comum dos quadros do sistema operacional em uso.
• Se for lançado o parâmetro “(JRootPane,FRAME)” , a tela vai assumir um 
padrão próprio da JVM, chamado JLF (Java Look and Feel) ou simplesmente 
aparência METAL.
1 – NONE 2 – FRAME
3 – INFORMATION_DIALOG 4 – ERROR_DIALOG
5 – COLOR_CHOOSER_DIALOG 6 – FILE_CHOOSER_DIALOG
7 – QUESTION_DIALOG 8 – WARNING_DIALOG
15
Algumas modificações em JFrame:
• getRootPane( ).setWindowDecorationStyle( 
JRootPane.FILE_CHOOSER_DIALOG );
16
Algumas modificações em JFrame:
• getRootPane( ).setWindowDecorationStyle( 
JRootPane. INFORMATION_DIALOG);
17
JLF (Java Look and Feel)
• O look-and-feel do Swing é único em todas as 
plataformas onde roda, seja ela Windows, Linux 
ou qualquer outra. 
• Isso implica que a aplicação terá exatamente a 
mesma interface (cores, tamanhos, etc) em 
qualquer sistema operacional.
18
JLF (Java Look and Feel)
• UIManager.setLookAndFeel("com.sun.java.s
wing.plaf.motif.MotifLookAndFeel");
19
JLF (Java Look and Feel)
• UIManager.setLookAndFeel("javax.swing.pl
af.metal.MetalLookAndFeel");
20
Algumas modificações em JFrame:
• A operação de fechamento é executada pelo método:
setDefaultCloseOperation( parâmetro );
o qual admite quatro parâmetros:
• HIDE_ON_CLOSE ➔ oculta a janela (default na classe);
• DO_NOTHING_ON_CLOSE ➔ não executa nenhuma ação 
(desativa o botão de fechamento);
• DISPOSE_ON_CLOSE ➔ faz desaparecer a janela e libera 
os recursos da classe que estão sendo usados pela JVM;
• EXIT_ON_CLOSE ➔ faz encerrar o aplicativo de uma forma 
equivalente ao uso de um System.exit(0);
• setDefaultCloseOperation(EXIT_ON_CLOSE);
21
Algumas modificações em JFrame:
• Pode-se ainda alterar as bordas do quadro por meio do método 
setBorder ( ) que pertence à RootPane. Sua chamada segue a 
sintaxe: 
getRootPane( ).setBorder (a classe que trata das bordas *)
• Sua aplicação no Exemplo8_4 fica:
getRootPane( ).setBorder(BorderFactory.createEtchedBorder(0));
22
Swing container:
• Todo componente Swing deve ser adicionado a 
um contêiner (Container) que administrará o 
agrupamento e exibição dos mesmos:
JLabel label = new JLabel("Seu nome:");
JTextField textField = new JTextField(20);
JPanel panel = new JPanel();
panel.add(label);
panel.add(textField);
23
Swing JPanel em um JFrame
• Swing para exibir o formulário, precisa-se colocar o Jpanel
em uma janela. 
• Utiliza-se aqui a classe JFrame, que representa uma janela 
simples. 
JLabel label = new JLabel("Seu nome:");
JTextField textField = new JTextField(20);
JPanel panel = new JPanel();
panel.add(label);
panel.add(textField);
JFrame frame = new JFrame("Meu primeiro formulário");
frame.add(panel);
frame.pack();
frame.setVisible(true);
24
O Swing possui o conceito de 
Listeners (ouvintes)
• Para ações diferenciadas como, por exemplo, 
recuperar o valor digitado pelo usuário para 
efetuar alguma operação, trabalha-se com eventos 
que são disparados pelo usuário. 
• No Swing isto é feito através de interfaces. Neste 
caso, o usuário pode disparar eventos ao digitar, 
ao clicar e ao passar o mouse, dentre outras. 
• O Swing possui o conceito de Listeners (ouvintes), 
quesão interfaces que implementamos com 
métodos para serem disparados por eventos.
25
A Classe NFrame:
• Com algumas modificações na classe Exemplo8_4 criamos a 
classe NFrame, ou seja:
26
A Classe NFrame:
import javax.swing.*;
import java.awt.*;
public class NFrame extends JFrame
{
public NFrame()
{
setLocation(50,100);
setTitle("Este é NFrame ( um JFrame personalizado )");
setSize(600,450);
setUndecorated(true);
getRootPane().setWindowDecorationStyle(JRootPane.FRAME);
getRootPane().setBorder(BorderFactory.createLineBorder(Color.black,3))
;
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
}
public static void main(String arg[])
{
new NFrame();
}
}
27
A Classe JLabel
• Trata-se de um objeto que é uma caixa dentro da qual uma 
String representativa de uma mensagem é exibida.
• O método setText define a mensagem que será exibida pelo 
label, ou seja:
setText ( “ Este é um rótulo \”JLabel\” “)
• O método setToolTipText está ligado a um evento do mouse. 
Quando está sobre a área do objeto Label, ele dispara a 
apresentação de uma pequena caixa contendo a mensagem 
(dica) digitada. Sua implementação é feita da forma:
setToolTipText( “ Aqui você escreve uma rápida dica “)
• Para posicionamento do objeto e dimensionamento pode-se 
usar os métodos setSize em conjunto com setLocation ou o 
método setBounds.
28
A Classe JLabel
• Exemplo8_5
JLabel L1 = new JLabel();
this.L1 = L1;
L1.setText("Este é um rótulo \"JLabel\"");
L1.setSize(200,15);
L1.setFont(F);
L1.setLocation(105,5);
L1.setToolTipText("Aqui voce escreve uma rapida dica");
L1.setForeground(Color.blue);
29
A Classe JTextField
• Trata-se de uma caixa que permite a inclusão de um texto
de apenas uma linha (via digitação do usuário).
• Exemplo8_6:
30
A Classe JTextField
• Os métodos principais dessa classe são:
– setSize(int Width,int Height)➔ define a largura e altura do texto.
– setLocation(int x,int y)➔ define as coordenadas x e y da 
posição do objeto na tela.
– setBounds(int x,int y, int Width,int Height)➔ substitui os 
métodos anteriores
– setText(String mensagem)➔ admite uma mensagem digitada 
pelo programador como um valor inicial ou como uma informação.
– setFont(new Font (...))➔ permite que seja alterada a fonte com 
a qual será exibida a mensagem dentro da caixa.
– setForeground(Color.red)➔ admite alterar a cor do primeiro 
plano (cor da fonte).
– setBackground(Color.yellow)➔ permite alterar a cor de fundo 
da caixa de texto.
– getText( )➔ permite a captura do texto digitado pelo usuário.
31
A Classe JPasswordField
• É uma classe derivada de JTextField;
• Serve para introdução de campos de senha no computador;
• Segue os mesmos métodos de sua superclasse (JTextField), 
apenas acrescenta como um artifício opcional o método:
setEchoChar( ‘ x ‘ );
• Exemplo8_6:
32
Eventos do Objeto JPasswordField
• A Caixa de senha sozinha dentro do frame não tem 
utilidade nenhuma;
• O programa necessita identificar uma senha e executar uma 
ação
• É necessário uma interface chamada Ouvinte ou Listener
que recebe um sinal do objeto e, como conseqüência , 
invoca os métodos correspondentes a ação ocorrida.
• O Exemplo8_8 é uma subclasse de Exemplo8_7 e registra o 
campo de senha no ouvinte de eventos ActionListener por 
meio do método:
Sx.addActionListener ( this ) ;
33
Eventos do Objeto JPasswordField
(Senha Correta)
Executa a Classe
Auxiliar8_7( )
(Senha Errada)
Apresenta informação
na Caixa de Diálogos
Após 3 tentativas erradas
apresenta informação de
saída do sistema

Continue navegando

Outros materiais