Baixe o app para aproveitar ainda mais
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
Compartilhar