Buscar

JavaSwing Intro

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 36 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 36 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 36 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

1
SwingCriando Interfaces Gráficas com JavaIntrodução
Linguagem de Programação - JavaProfessora: Mariana O. Silva, Esp., MeContato: mariana.silva@uniandrade.edu.br
2
Conteúdo da Aula
• História;
• Características do Swing;
• Outras opções?
3
Um pouco de história ...
Java 1.0:
AWT (Abstract Window Toolkit ou Kit de desenvolvimento 
abstrato de janelas);
Delega a criação dos componentes para a GUI (graphical user
interface) nativa do SO (sistema operacional);
Os componentes gráficos se adequam ao “Look and Feel” do 
SO;
“Write Once, Run Everywhere”. Escreva uma vez e execute em 
qualquer lugar
Problema!
Nem todos os SO’s tem a mesma riqueza de componentes 
(Windows e MAC vs Motif).
4
Alguns exemplos de telas AWT:
Exemplo: teaching.java.gui.sample01
5
Um pouco de história ...
Em 1996, a Netscape trabalhava em um projeto chamado IFC (Internet Foundation Classes);Os componentes de tela eram desenhados integralmente na tela; Detalhe: eram desenhados pela IFC e não pelo SOVantagens? Muitas ...O visual da tela era o mesmo independente de SO;Era possível criar componentes que não estavam disponíveis em alguns SOs;Assim nascia o Swing: A Sun adotou a idéia da Netscape.
O Swing começou a ser distribuído separadamente a partir da versão 1.1 do Java.
A partir da versão 1.2 começou a fazer parte da JFC (Java Foundation Classes)
O AWT não morreu!Continua sendo usado pelo Swing. O tratamento de eventos, por exemplo é AWT
6
Por que usar Swing?Vantagens?
Um conjunto rico de elementos de 
interface;
Pouquissima dependência da plataforma 
na qual ele está rodando;
Comportamento consistente 
independente do SO.
7
Por que usar Swing?Desvantagens?
Pode se apresentar um pouco mais lento 
que outros Toolkits por sempre desenhar 
a tela “com as próprias mãos!”
8
Tenho outras alternativas?
Sim.O SWT (Standard Widget Toolkit) foi desenvolvido pela IBM;É mantido pela Eclipse Foundation;É escrito em Java;Acessa as bibliotecas nativas do SO usando JNI (Java Native Interface);É portavel ... Mas o Tookit é específico para cada Plataforma.
9
SWT
Onde encontro mais informações sobre SWT?
http://www.eclipse.org/swt/
10
Swing Look and Feel
Como vimos anteriormente, o Swing é responsável por desenhar suas próprias janelas;Quer dizer que o Swing terá apenas uma aparência em qualquer sistema operacional? Não! A Sun criou um mecanismo elegante chamado Look and Feel que permite que o desenvolvedor troque facilmente a skin a qualquer momento.
11
Swing Look and Feel
Possui vários Look and Feel para cada SO• CrossPlatformLookAndFeel (padrão);• SystemLookAndFeel (Recupera do SO);• Synth (Configuração de Look and Feel via XML);• Multiplexing (Mistura de Look and Feel’s).
12
Swing Look and Feel - Exemplos
Motif (UNIX) Windows
Metal ou Ocean
Exemplo: teaching.java.gui.sample02
13
SystemLookAndFeel – adequados ao SO
Plataforma Look and Feel
Solaris, Linux com GTK+ 2.2 ou superior GTK+ 
Outros Solaris, Linux Motif
IBM UNIX IBM
HP UX HP
Classic Windows Windows
Windows XP Windows XP
Windows Vista Windows Vista
Macintosh Macintosh
14
Frames
15
Criando uma JFrame
public class FrameSimples {
public static void main(String[] args) {
JFrame frame = new JFrame(“F..les");
frame.setDefaultCloseOperation
(JFrame.EXIT_ON_CLOSE);
frame.setSize(300, 300);
frame.setVisible(true);
}
}Exemplo: teaching.java.gui.sample03
16
Criando uma JFrame (cont.)
Os componentes swing ficam no pacotejavax.swing;O método setSize(int,int) define uma framecom altura e largura em pixels;Como a JFrame nasce invisível, é possíveladicionar vários componentes nela e depoisacionar o método setVisible(true);Com o método setDefaultCloseOperationpodemos especificar qual será a ação aofechar a janela.
javax = Java extension
17
Alterando e obtendo informações da FramesetLocation(x,y):
Posiciona a frame no ponto x,y da janela do SO.setBounds(x,y,largura,altura):
Muda a posição e tamanho da frame.setIconImage(Image img):
Atribui um ícone à JFrame.setTitle(String title):
Altera o titulo da frame.String getTitle():
Retorna o título corrente da frame.
18
Descobrindo o melhor tamanho de uma frame
Pode ser necessário descobrir o tamanho da área útil!O usuário pode ter uma área útil de 800x600 ou 1280x1024. Sua aplicação deve prever isso em alguns casos.
19
Descobrindo o melhor tamanho de uma frame
private void ajustarTamanho() {
Toolkit kit = Toolkit.getDefaultToolkit();
Dimension screenSize = kit.getScreenSize();
// Ajusta para a metade da área util do desktop
setSize((int)(screenSize.getWidth()/2),
(int)(screenSize.getHeight()/2));
}
Exemplo: teaching.java.gui.sample05
20
Alterando e obtendo mais informações da frame
boolean isResizable():Verifica se a janela pode ser redimensionada.void setResizable(boolean resizable):Torna a janela redimensionável ou não.static void setDefaultLookAndFeelDecorated(boolean decorated):Permite ligar ou desligar a decoração Swing das bordas e componentes básicos da frame). Tem o mesmo efeito do código abaixo:
frame.setUndecorated(true); 
frame.getRootPane().setWindowDecorationStyle(JRootPane.FRAME);
21
Inserindo elementos em uma Frame
22
Estrutura de uma Frame Swing
Uma frame Swing é complexa e possui diversos painéis dentro da frame. Root Pane:Painel principal.Layered Pane:Armazena outros painéis como o Menu bar Pane e o Content Pane.Menu bar PaneOpcional: Contém os elementos do menu.Content PaneÁrea visível do painel. Mais usada pelos desenvolvedores.Glass PaneTrabalha como um painel de vidro no qual podemos abranger toda a área. Por default é invisível.
23
Quase todos os objetos Swing são JComponentTodos os componentes do Swing, que começam com “J” são filhos de JComponent, exceto JFrame e JDialog, que são componentes de alto nível;Esta classe inclui tudo o que é necessário para desenhar componentes e interceptar eventos.
24
Quase todos os objetos Swing são JComponent
25
Adicionando componentes em uma FrameComo vimos anteriormente, normalmente adicionamos componentes na ContentPane;Para adicionar um componente nesta área devemos:
Obter o objeto ContentPane da frame a partir da JFrame (versões anteriores ao 
Java 5.0)
Simplesmente chamar o método add(Component c) do objeto JFrame.
minhaFrame.add(meuComponente);
minhaFrame.getContentPane().add(meuComponente)
26
Criando um JComponent SimplesPara criar um JComponent específico é necessário herdar da classe JComponent e sobrescrever o método paintComponent;Este método recebe um objeto Graphicscomo parâmetro; O objeto Graphics possui várias funcionalidades para desenhar imagens e textos;Toda vez que a janela precisar ser redesenhada o método paintComponent é chamado.
27
Exemplo: Escrevendo uma String na tela
public class MyFrame extends JFrame {...add(new MyStringComponent)...}
public class ComponenteSimples extends JComponent {
protected void paintComponent(Graphics g) {
g.drawString("Usando Swing", 15,40);
}
}
Exemplo: teaching.java.gui.sample06
28
Inserindo elementos gráficos na tela
O método paintComponent recebe como parâmetro um objeto do tipo Graphics;O objeto do tipo Graphicspermite desenhar elementos na área do componente em um eixo 2D (x, y).
29
Inserindo elementos gráficos na tela
Método Graphics.drawLine(x1,y1,x2,y2):Desenha uma linha a partir das coordenadas x,y iniciais e finaisExemplo: g.drawLine(100,100,420,312)
30
Inserindo elementos gráficos na tela
Método Graphics.drawRect(x1,y1,width,height)Desenha um retângulo a partir das coordenadas x,y iniciais e largura (width) e height (largura)Exemplo: g.drawRect(72,160,200,35)
31
Inserindo elementos gráficos na tela
Método Graphics.drawOval(x1,y1,width,height)Desenha uma figura oval a partir das coordenadas x,y iniciais e largura (largura) e height(altura)Exemplo: g.drawOval(300,120,100,75)
32
Inserindo elementos gráficos na tela
Método Graphics.drawArc(x,y,w,h,startAngle,arcAngle)Desenha um arco a partir das coordenadas x,y iniciais, width(largura), height (altura) e ângulosExemplo: g.drawArc(100,100,80,60,45,120)
Exemplo: teaching.java.gui.sample07
33
Mecanismo de repintura de telaToda vez que é necessário repintar a tela, o toolkit executará o método repaint() ou repaint(x,y,w,h) automaticamente;Caso seja necessário que a tela seja atualizada, nunca chame paintComponent diretamente. Use repaint!O repaint que será responsável por redesenhar as telas
Exemplo: teaching.java.gui.sample07 e sample08
34
Han dsOn !
35
O brigada!
36

Outros materiais