Buscar

aula13 POO

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 13 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 13 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 13 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

JComboBox e a classe anônima 
Vamos rodar o programa do pacote de exemplos do Deitel no diretório que criará um ComboBox e 
utilizará uma classe anônima para implementar um objeto handler par captura de eventos.: 
ch12_21_22: Fig. 12.21: ComboBoxFrame.java e Fig. 12.22: ComboBoxTest.java 
O componente JComboBox nos permitem criar a visualização de uma lista de itens 
selecionáveis através de um botão tipo “dropdown”. 
Obs.Um JcomboBox permite criar uma lista genérica de objetos (e.g. Strings, Icons, 
etc.) 
Classe anônima: Uma classe anônima é declarada dentro da chamada de um método. 
Neste tipo especial de classe a criação do objeto da classe é realizada 
simultaneamente a própria declaração da classe. Assim o primeiro parâmetro que 
aparece é a palavara new que é a palavra chave para criação de objetos. 
A classe anônima sempre terá uma relação “is a ”, com a interface que ela implementa 
ou com a superclasse da qual ela será filha, sendo o nome da Interface que ela 
implements ou o nome da Superclasse que ela extends, a palavra que será seguida da 
palavra new , seguida do construtor vazio () . A partir desse ponto o resto do corpo da 
classe anônima é declarado como qualquer classe, lembrando que se ela implementa 
uma interface, os métodos correspondentes da interface deverão estar declarados 
explicitamente. 
Obs. Classes anônimas são um tipo de classe interna, e tem acesso às variáveis de 
instância e métodos definidos na classe de primeiro nível. Classes anônimas são 
normalmente utilizadas para implementação de objetos handler, e são o tipo de classe 
geralmente utilizada em processos de geração automática por IDEs. 
JList 
Um Jlist é um componente que nos permite criar uma lista navegável de itens 
genéricos selecionaveis, e capaz de gerar eventos quando os itens são 
selecionados. O conceito de uma Jlist é bastante similiar ao do JComboBox, porém 
nesse caso ao invés de um botão do tipo “drop down”, é exibida um lista de itens 
selecionáveis. 
Vamos rodar o programa do pacote de exemplos do Deitel no ch12_23_24 Fig. 12.23: ListFrame.java 
e Fig. 12.24: ListTest.java 
Vamos rodar agora o programa do pacote de exemplos do Deitel no ch12_25_26 para um exemplo de uma 
lista de múltiplos itens selecionaveis. Fig. 12.25: MultipleSelectionFrame.java Fig. 12.26: 
MultipleSelectionTest.java 
Veremos uma sequência de programas que exploram a utilização de 
eventos gerados pelo uso do mouse. Veremos que os objetos da classe 
java.awt.event.MouseEvent são produzidos e despachados para diversas 
ações específicas realizadas com o mouse. A java.awt.event também 
fornece diversas interfaces do tipo Listener para captura e tratamento de 
eventos de mouse, como as interfaces MouseListener e a MouseMotion 
com diversos métodos para captura e tratamento de cada tipo específico 
de evento de mouse. 
 
 
Vamos rodar o programa do pacote de exemplos do Deitel no diretório 
ch12_28_29, para verficação do tratamento de eventos gerados por 
GUI que respondem a ações no mouse geradas pelo usuário. 
 Fig. 12.28: MouseTrackerFrame.java e Fig. 12.29: 
MouseTrackerFrame.java 
Classes Adaptadoras 
Muitas vezes precisamos utilizar algum método de uma ou mais interfaces, 
mas não queremos ter que implementar explicitamente cada um de todos 
os métodos declarados nas interfaces (lembre-se que uma inteface é um 
contrato que o obriga a implementar todos os seus métodos). Uma maneira 
conveniente de evitar ter que implementar explicitamente todos os métodos 
das interfaces é declarar a classe como uma subclasse (extends) de uma 
classe adaptadora que implementa essas interfaces. Normalmente a classe 
adaptadora irá declarar de forma concreta todos os métodos das interfaces, 
porém sem execução de qualquer ação. Assim como subclasse de uma classe 
adaptadora, basta sobreescrever de forma explicita apenas os métodos de 
interesse das interfaces que a classe adaptadora implementa e 
consequentemente herados pela sua subclasse. 
O parcote java.awt.event fornece diversas classes adaptadoras para esse tipo 
de uso. 
Vamos rodar o programado do pacote de exemplos do Deitel no diretórioch12_31_32: para verificar o 
conceito de classe adaptadora utilizada para o tratamento de eventos no mouse. 
Fig. 12.31: MouseDetailsFrame.java e Fig. 12.32: MouseDetails.java 
Vamos rodar o programado do pacote de exemplos do Deitel no diretório 
ch12_34_35: 
Fig. 12.34: PaintPanel.java e Fig. 12.35: Painter.java 
Um exemplo usando elemento gráfico 
para desenhar com o mouse 
Gerenciadores de Layout 
•A classe java.awt.FlowLayout gerencia a disposição dos componentes de uma 
janela em um fluxo direcional. FlowLayout é usado tipicamente para gerenciar o 
posicionamento de botões em uma janela, e irá arranjá-los em uma organização 
linha a linha, horizontalmente mantendo os elementos na mesma linha enquanto 
couber no espaço da janela. Basicamente o posicionamento pode ser 
oriententado à direita, à esquerda ou ao centro. 
 Vamos rodar o programa do pacote de exemplos do Deitel no diretórioch12_39_40 
Fig. 12.39: FlowLayoutFrame.java e Fig. 12.40: FlowLayoutDemo.java 
•A classe java.awt.BorderLayout gerencia a disposição dos componentes de 
uma janela de maneira a posicioná-los em cinco regiões: norte, sul, leste oeste e 
centro. 
Vamos rodar o programa do pacote de exemplos do Deitel no diretórioch12_41_42 
Fig. 12.41: BorderLayoutFrame.java e Fig. 12.42: BorderLayoutDemo.java 
•A classe java.awt.GridLayout gerencia a disposição dos componentes de uma 
janela em um arranjo retangular e de maneira que todos possuam a mesma 
área . 
Vamos rodar o programa do pacote de exemplos do Deitel no diretórioch12_43_44 
Fig. 12.44: GridLayoutDemo.java e Fig. 12.43: GridLayoutFrame.java 
2D GUI (A classe Graphics) 
Quando estamos trabalhando com elementos gráficos na interface Swing, normalmente a 
interação se dará através do uso de um @override do método paintComponent(Graphics 
g), que é um método da classe Jcomponent e que por consequência todo GUI component 
possui. Esse método recebe um objeto pertencente a uma subclasse da classe abstrata 
java.awt.Graphics , essa subclasse é depente da plataforma utilizada(Windows, Linux,Mac, 
etc.), mas que é implicitadamente definida pela plataforma, e que representa a área 
gráfica do componente sendo manipulado. Cada component possui o que é chamado de 
seu próprio contexto gráfico (com um sistema de coordenadas x,y com unidades dadas 
em pixels e que possuem origem na extremidade superior esquerda do componente, 
correndo de cima para baixo e da esquerda para direita para referências de operações de 
manipulação. A construção de elementos gráficos passa então a ser realizada a partir da 
utilização dos diversos métodos que nos permitem manipular a variável grafica g que 
aponta para o objeto que representa a área gráfica do GUI Component. 
 
Quando um aplicativo usando componentes GUI é executado, o sistema gera 
automaticamente um evento para o disparo do método paintComponent. Após a 
incialização, para que o método paintComponent seja disparado novamente, deverá 
haver a ocorrência de um evento. O método repaint() fornece o mecanismo para disparar 
a chamada do método paintComponent, e pode ser chamado associado a ocorrência de 
algum evento de interesse, como visto no exemplo da Fig. 12.34: PaintPanel.java visto 
ateriormente. 
•Vamos rodar o programado do pacote de exemplos do Deitel no diretório ch13_05_06: 
Fig. 13.5: ColorJPanel.java e Fig. 13.6: ShowColors.java 
Veremos a seguir diversos exemplos para criação de diferentes 
figuras 2D, onde basicamente o que irá diferir são os métodos da 
classe Graphics que serão evocados através da variável de objeto 
Graphics g para construção das formas 2D. 
•Vamos rodar o programado do pacote de exemplos do Deitel no diretório ch13_07_08: 
Fig. 13.7: ShowColors2JFrame.java e Fig. 13.8: ShowColors2.java 
•Vamos rodar o programado do pacote de exemplos do Deitel no diretórioch13_11_12: 
Fig. 13.11: FontJPanel.java e Fig. 13.12: Fonts.java 
•Vamos rodar o programado do pacote de exemplos do Deitel no diretório ch13_18_19: 
Fig. 13.18: LinesRectsOvalsJPanel.java e Fig. 13.19: LinesRectsOvals.java 
•Vamos rodar o programado do pacote de exemplos do Deitel no diretório ch13_27_28: 
Fig. 13.28: DrawPolygons.java e Fig. 13.27: PolygonsJPanel.java 
https://docs.oracle.com/javase/8/docs/technotes/guides/2d/ 
http://docs.oracle.com/javase/8/docs/api/index.html =>java.awt =>Graphics2D 
https://docs.oracle.com/javase/8/docs/technotes/guides/2d/
http://docs.oracle.com/javase/8/docs/api/index.html

Outros materiais