Anteriormente, o programa usou o método de entrada e saída mais simples. Os programas modernos exigem o uso da Interface Gráfica do Usuário (GUI), que inclui menus, botões, etc. O usuário seleciona opções no menu e clica em botões através do mouse para comandar o módulo de função do programa. Este capítulo aprende a escrever experimentos científicos da GUI no idioma Java e como implementar a entrada e saída através da GUI.
Awt e swing
Anteriormente, escrevi programas de GUI em Java, usando o abstrato Window Toolkit AWT (abstrato Window Toolkit). O balanço pode ser considerado como uma versão aprimorada do AWT, em vez de substituir o AWT, e é uma melhoria e extensão do AWT. Portanto, ao escrever programas de GUI, o swing e o AWT devem ser usados. Eles coexistem na classe Java Foundation (JFC).
Embora o AWT e o swing forneçam classes que constroem elementos de interface gráfica, seus aspectos importantes variam: a AWT confia na plataforma principal para desenhar componentes da interface do usuário; . A diferença mais óbvia entre o swing e o AWT é a aparência dos componentes da interface. No entanto, um aplicativo baseado em swing pode ter a mesma aparência e estilo em qualquer plataforma.
As classes em swing são herdadas da AWT, e algumas classes de swing estendem diretamente as classes correspondentes no AWT. Por exemplo, Japplet, Jdialog, JFrame e Jwindow.
Usando o swing para projetar uma interface gráfica, dois pacotes principais são introduzidos:
Como o swing é muito rico, é impossível dar uma introdução abrangente para balançar em um livro, mas o conhecimento sobre Swing introduzido neste capítulo é suficiente para permitir que os leitores escrevam programas de GUI bastante requintados.
Componentes e recipientes
Os componentes são elementos básicos das interfaces gráficas que os usuários podem operar diretamente, como botões. Um contêiner é um elemento composto de uma interface gráfica e o contêiner pode conter componentes, como um painel.
Classes predefinidas da linguagem Java para cada componente, e os programas passam por vários objetos de componentes através deles ou de suas subclasses. É o botão. O idioma Java também predefinou classes para cada contêiner, e os programas criam vários objetos de contêiner através deles ou de suas subclasses. Por exemplo, a classe de janela predefinida JFrame no swing é uma classe de contêiner, e o objeto da subclasse JFrame ou JFrame criado pelo programa é uma janela.
Para gerenciar componentes e contêineres de maneira unificada, as superclasses são definidas para todas as classes de componentes e as operações comuns dos componentes são definidas na classe de componentes. Da mesma forma, defina a classe de contêiner de superclasse para todas as classes de contêiner e defina as operações compartilhadas do contêiner na classe de contêineres. Por exemplo, o método Add () é definido na classe de contêineres.
As classes de componente, contêiner e gráficos são classes -chave na biblioteca AWT. Para construir interfaces gráficas complexas em nível hierárquico, os contêineres são tratados como componentes especiais que podem ser colocados em outro recipiente. Por exemplo, separe vários botões e caixas de texto em dois painéis e coloque esses dois painéis e outros botões na janela. Esse método de interfaces hierarquicamente construídas pode construir interfaces de usuário complexas de maneiras incrementais.
Noções básicas de design de driver de evento
1. Eventos, monitora e monitore o registro <BR /> Eventos na interface gráfica Consulte as operações do usuário que ocorrem em um componente. Por exemplo, se um usuário clicar em um botão na interface, isso significa que um evento ocorreu neste botão e o objeto de botão é o gatilho do evento. O objeto que monitora os eventos é chamado de monitor e o monitor fornece um método para lidar com eventos. Para associar o monitor ao objeto de evento, é necessário registrar o objeto de evento para informar ao sistema o monitor do objeto de evento.
Tomando o programa responde aos eventos do botão como exemplo, o programa deseja criar um objeto de botão, adicioná -lo à interface, registrar o botão como um monitor e o programa precisa ter um método para responder aos eventos do botão. Quando o evento "clique no botão" ocorre, o sistema chama o método de processamento de eventos registrado para este botão para concluir o trabalho de manusear eventos do botão.
2. Perceba a missão de manuseio de eventos
Existem duas soluções principais para escrever manipuladores de eventos no idioma Java: um é redefinir o handleEvent (EventEVT), e o programa usando esta solução é um pouco mais de carga de trabalho; O Java fornece várias interfaces de acordo com o tipo de evento. Quando ocorre um evento, o método HandleEvent interno (Event EVT) do sistema chama automaticamente o método para responder aos eventos implementados pela classe do monitor.
O modelo usado no pacote java.awt.event para detectar e reagir aos eventos inclui os três componentes a seguir:
Objeto de origem: no componente do evento "ocorre", mantém contato com um grupo de objetos que "ouvem" o evento.
Monitor: um objeto de uma classe que implementa uma interface predefinida.
Objeto de evento: ele contém informações que descrevem um evento específico passado da fonte para o monitor quando ocorre um evento.
O trabalho que um driver de evento deseja fazer, além de criar objetos de origem e monitor, também deve providenciar o monitor para entender os objetos de origem ou registrar o monitor com os objetos de origem. Cada objeto de origem possui uma lista de monitor registrada, fornecendo uma maneira de adicionar objetos de monitor à lista. O sistema notificará o objeto Monitor dos eventos que ocorrem no objeto de origem somente após o objeto de origem registrar o monitor.
3. Tipo de evento e interface de monitor <r /> Na linguagem Java, a fim de facilitar o sistema para gerenciar eventos e facilitar o programa para registrar monitores, o sistema classifica os eventos, que é chamado de tipos de eventos. O sistema fornece uma interface para cada tipo de evento. A classe para ser um objeto de monitor deve implementar a interface correspondente e fornecer o método de responder a eventos especificados pela interface.
Tomando o evento de botão de resposta do programa como exemplo, o botão JButton Class Object pode ser o iniciador de um evento. Quando o usuário clica no botão correspondente ao botão na interface, o objeto de botão gera um evento do tipo ActionEvent. Se o objeto Monitor for OBJ e a classe OBJ for OBJ, o OBJ da classe deve implementar a interface ActionListener no AWT para implementar o método ActionPormado de monitoramento de eventos do botão. O objeto de botão deve registrar seu monitor OBJ usando o método AddactionListener.
Quando o programa está em execução, quando o usuário clica no botão correspondente ao objeto de botão, o sistema passa um objeto ActionEvent do objeto de incêndio do evento para o monitor. O objeto ActionEvent contém informações, incluindo qual botão ocorre o evento e outras informações sobre o evento.
A tabela a seguir mostra alguns tipos de eventos representativos e alguns componentes de giro que produzem esses eventos. Quando ocorre um evento real, geralmente ocorre uma série de eventos. Um evento ActionEvent significa que o mouse foi lançado. Mas os aplicativos geralmente lidam apenas com um único evento ActionEvent da ação completa de pressionar um botão.
Cada tipo de evento possui uma interface de monitor correspondente e a Tabela 11-2 lista os métodos para cada interface. As classes que implementam interfaces de monitor devem implementar todos os métodos definidos na interface.