Baixe o app para aproveitar ainda mais
Prévia do material em texto
Programação Orientada a Objetos. 1 Prof.Fábio Rener Construção de GUI Swing e AWT (Construção e tratamento de Ações). AWT – Abstract Windowing Toolkit. O pacote java.awt fornece várias classes para implementação de GUIs (Graphical User Interface). Além de componentes de interface, como botões e campos de texto, o awt fornece classes para implementar janelas, desenhar gráficos e processar imagens. Os componentes de interface do awt são sub-classes da classe Componet, do mesmo pacote. Esta classe fornece métodos comuns a todos os componentes como por exemplo: public void setBounds(int x, int y, int largura, int altura) Define a posição do componente na tela(x e y) e suas dimensões (largura e altura), sendo que todos estes dados são em pixels. public void setFont(Font f) Define a fonte utilizada pelo componente(labels, textfields, .....) public void setForeground(Color c) Define a cor de primeiro plano do componente. public void setBackground(Color c) Define a cor de fundo do componente. public void setVisible(boolean b) Torna o componete visível ou invisível. public void setEnabled(boolean b) Habilita ou desabilita o componente. Exemplo: package br.anhanguera.poo.gui; import java.awt.*; public class Frame1 extends Frame { public Frame1(String title) { // Estamos indicando o titulo da janela this.setTitle(title); // Configuracao do tamanho da janela Programação Orientada a Objetos. 2 Prof.Fábio Rener this.setSize(350, 500); // Fazendo a janela aparecer this.setVisible(true); } // Ao executar a classe o metodo main sera executado, criando uma instancia do // Frame1, que por sua vez faz com que a janela seja exibida. public static void main(String args[]) { Frame1 janela = new Frame1("Titulo da Janela"); } } Principais Componentes Label public void setText(String s) Define a string do label. public String getText() Informa a string do label. public void setAlignment(int a) Define o alinhamento da string do label(LEFT, CENTER, RIGHT). public int getAlignment() Informa o alinhamento da string do label. Button public void setLabel(String s) Define a string do botão. public String getLabel() Informa a string do botão. List public void add(String s) Adiciona um item no final da lista. public void add(String s, int index) Adiciona um item na lista, na posição index. public String getItem(int index) Obtêm o item na posição index. public synchronized String[] getItens() Retorna um array de Strings com os itens da lista. Programação Orientada a Objetos. 3 Prof.Fábio Rener public synchronized int getSelectedItem() Retorna o item selecionado. public void select(int index) Seleciona um item da lista. public synchronized void deselect() Deseleciona um item. Choice public void addItem(String s) Adiciona um item no choice. public String getItem(int index) Obtêm um item na posição index. public synchronized void insert(String item, int index) Adiciona um item em determinada posição. public void select(int index) Seleciona um item da lista. public void remove(int index) Remove um item do choice. public void removeAll() Remove todos os itens do choice. TextField public void setText(String s) Define a string do campo texto. public String getText() Informa a string do campo texto. public void setEchoChar(Char c) Define o caracter a ser mostrado no caso do campo texto ser usando como campo de senha. public synchronized void setCaretPosition(int position) Seta a posição do cursor na String do campo. public synchronized int getCaretPosition() Obtêm a posição do cursor na String do campo. public synchronized String getSelectedText() Obtêm a String selecionada no campo. Programação Orientada a Objetos. 4 Prof.Fábio Rener TextArea Mesmos métodos do TextField acrescidos de alguns como: public synchronized void insert(String s, int x) Insere uma String na posição x. CheckBox e RadioButton public void setState(boolean state) Define o estado do componente(selecionado ou não). public boolean getState() Obtêm o estado do componente(selecionado ou não). public void setLabel(String s) Define a string do rótulo. public String getLabel() Informa a string do rótulo. Scrollbar public int getValue() Obtêm o valor da scrollbar. public void setValue(int x) Seta o valor da scrollbar. Laboratório: Vamos analisar o código fontes das classes Frame2.java e Frame3.java Programação Orientada a Objetos. 5 Prof.Fábio Rener Containers A hierarquia de classes dos containers: Classe Container Super classe dos componentes do tipo container. Principais métodos: public void add(Component c) Adiciona um componente no container. public void setLayout(LayoutManager mng) Define o layout manager que será utilizado para distribuir os componentes no container. Panel Container simples, sem moldura, utilizado para abrigar componentes e pode ser colocado dentro de outros containers(applets ou frames). Uma janela pode conter vários Panels. Window Janela sem Bordas ou Menus. Programação Orientada a Objetos. 6 Prof.Fábio Rener Frame Janela com bordas e pode ter menus. Utilizado para criar aplicações Windows. Dialog Caixa de diálogo de uso geral que pode ser modal. Gerenciador de Layout Um Gerenciador de Layout (Layout Manager) é um objeto que controla o tamanho e posição de um componente em um container. Todo Container por default possui um gerenciador de layout. FlowLayout Este é o layout default das classes Panel e Applet. Neste layout os componentes são colocados em uma linha, um após o outro, se todos componentes não cabem em uma única linha, novas linhas são criadas. Os componentes em uma linha são centrados de acordo com a largura da tela ou painel. Neste layout, a largura e altura definidas pelo programador do componente são mantidas. BorderLayout Neste layout os componentes podem ser colocados em cinco regiões diferentes, sendo elas: Norte, Sul,Leste, Oeste e Centro. Componentes colocados nas regiões Norte e Sul da janela, ocupam toda a largura da mesma, e possuem altura definida pelo programador. Os componentes colocados nas regiões Leste e Oeste, ocupam toda a altura da janela e possuem a largura definida pelo programador. GridLayout Neste layout, a janela ou painel é dividido em coluna e linhas(como em um grid) e os componentes são colocados em cada uma das células, ocupando toda a área da mesma. Laboratório: Vamos analisar o código fontes das classes Frame4.java, Frame5.java e Frame6.java Programação Orientada a Objetos. 7 Prof.Fábio Rener Tratamento de Eventos Modelo de Eventos no Java: • Os eventos podem ser de diversos tipos, por exemplo: • Click em um botão • Click do mouse • Tecla pressionada • Fechamento de uma janela • Entre outros.... • Qualquer classe pode ser notificada da ocorrência de um determinado tipo de evento, basta que ela implemente uma interface do tipo listener(ouvinte). • A classe(listener) que irá ser notificada de eventos ocorridos em um determinado objeto deve registrar como objeto o seu interesse em receber as notificações. O objeto notifica a classe ouvinte chamando um método correspondente ao evento ocorrido, método este definido na interface Listener implementada pela classe. Ao chamar o método o objeto passa como parâmetro um objeto de evento que possui informações sobre o evento ocorrido. Tabela de Tipos de Listeners Interface Métodos Classe Parâmetro Métodos ActionListener actionPerformed ActionEvent String getActionCommand() int getModifiers() String paramString() AdjustmentListener adjsutmentValueChanged AdjustmentEvent Adjustable getAdjsutable() int getValue() int getAdjustmentType() String paramString() ComponentListener componentHidden componentMoved componentResized componentShow ComponentEvent Component getComponent() String paramString() ContainerListener componentAdded componentRemoved ContainerEvent Container getContainer() Component getChild() String paramString() FocusListener focusGained focusLost FocusEvent boolean isTemporary() String paramString() ItemListener itemStateChanged ItemEvent Object getItem() int getStateChange() String paraString() Programação Orientada a Objetos. 8 Prof.Fábio Rener KeyListener keyPressed keyTyped keyReleased KeyEvent int getKeyCode() void setKeyCode(int keyCode) void setKeyChar( char keyChar) void setModifiers(int modifieres) char getKeyChar() String getKeyText(int keyCode) String getKeyModifieres(int modifieres) boolean isActionKey() String paramString() MouseListener mouseClicked mouseEntered mouseExited mousePressed mouseReleased MouseEvent int getX() int getY() Point(getPoint() int getClickCount() boolean isPopupTrigger() String paramString() MouseMotionListener mouseDragged mouseMoved MouseEvent int getX() int getY() Point(getPoint() int getClickCount() boolean isPopupTrigger() String paramString() TextListener textValueChanged TextEvent String paramString() WindowListener windowActivated windowClosed windowDeactivated windowDeiconified windowClosing windowIconified windowOpened WindowEvent Window getWindow() String paramString() Laboratório: Vamos analisar o código fontes das classes Frame7.java Programação Orientada a Objetos. 9 Prof.Fábio Rener Swing: O “Swing” é uma biblioteca de componentes para implementação de interfaces gráficas (GUI’s). Esta biblioteca é uma evolução do AWT, alguns dos componentes são sub-classes de componentes do AWT,porém o Swing apresenta um número maior de classes com recursos bem mais sofisticados. A maioria das classes do Swing são 100% implementadas em Java, com exceção de alguns containers(JWindow,JFrame,...) que são sub -classes de containers do AWT, estes últimos utilizam recursos nativos. Como a grande maioria das classes do Swing não utilizam recursos nativos, os componentes são bem mais flexíveis que os correspondentes do AWT, pois estes últimos só possuem as funcionalidades comuns as diversas plataformas. Alguns recursos do Swing: • Botões e Labels podem mostrar imagens e texto. • Podemos adicionar ou alterar a borda desenhada ao redor da maioria dos componentes. • Podemos facilmente alterar o comportamento ou aparência dos componentes invocando métodos ou criando subclasses. Com o Swing podemos desenvolver eficientes interfaces gráficas que apresentam o “look and feel” (aparência) que especificarmos. Por exemplo, um programa feito com o Swing pode ser projetado para que tenha sempre a mesma aparência(padrão de interface) independente do sistema operacional em que o mesmo é executado. Podemos também especificar que o programa assuma a aparência do sistema operacional no qual ele está rodando. Desta forma, se o programa estiver rodando no Windows ele possuirá a aparência de uma aplicação Windows, se ele estiver rodando em uma máquina Unix terá a aparência do Unix. O Swing possui também um “look and feel” próprio, chamado de “Metal Look and Feel”, esta é a aparência default dos componentes do Swing.
Compartilhar