Você está na página 1de 30

COMPONENTES DE INTERFACE GRFICA DE USURIO (GUI)

Leonardo Queiroz Oliveira

Bibliotecas

Existem 2 bibliotecas em Java para criao de interfaces para interao grfica com o usurio:

AWT: biblioteca baseada em componentes e comportamentos especficos para cada plataforma (Windows, Linux, Mac OSX, etc.); Swing: biblioteca independente de plataforma e que mantm comportamentos e aparncia idnticas em qualquer uma delas. Essa biblioteca executa no topo de AWT.

Componentes

javax.swing.JFrame: uma classe que representa uma janela com um ttulo e uma borda; Internamente, ela contm um painel, que pode ser obtido atravs do mtodo getContentPane(); Nesse painel (Container) so adicionados os componentes (Component); java.awt.Container: componente que pode conter outros componentes AWT; java.awt.Component: objeto que tem uma representao grfica, pode ser apresentado na tela e pode interagir com o usurio.

Hierarquia

Um Container, em outras palavras, um Componentes que pode conter outros objetos do tipo Component; - java.lang.Object - java.awt.Component - java.awt.Container

Componentes Swing

Apesar de um Container aceitar componentes AWT, preferimos usar componentes Swing, pois estes apresentam um comportamento mais uniforme entre diversas plataformas, conforme vimos; Os componentes Swing so objetos do tipo JComponent; javax.swing.JComponent: classe base para todos os componentes Swing que estudaremos. Herda da classe Container.

JFrame

Contm internamente um painel, conforme dito, que pode ser obtido atravs do mtodo getContentPane(), que retorna um objeto do tipo Container; Por padro, um JFrame apenas oculta a janela principal ao fechar a janela. Para fazer com que a aplicao seja fechada, devemos chamar o seguinte mtodo: setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Por padro, tambm, um JFrame invisvel, ento devemos chamar o mtodo setVisible(true); O tamanho da janela pode ser definido atravs do mtodo setSize(largura, altura), para o qual passamos 2 inteiros que representam a largura e a altura da janela em pixels.

Container

Um container precisa de um gerenciador de layout (interface LayoutManager) para que os componentes sejam exibidos corretamente; Para isso, deve-se chamar o mtodo setLayout() passando um objeto de uma das classes que implementa a interface LayoutManager:

FlowLayout: componentes so adicionados da esquerda para a direita, de cima para baixo; GridLayout: componentes adicionados na forma de um grid (tabela com linhas e colunas); Entre outros...

Apesar de ser possvel definir o layout de um container, recomendvel usar uma ferramenta para desenho como o Matisse do NetBeans.

Container

Apesar de ser possvel definir o layout de um container, recomendvel usar uma ferramenta para desenho como o Matisse do NetBeans; Um container contm diversos mtodos:

add(Component c): adiciona um componente; add(Component c, int index): adiciona um componente em uma determinada posio; remove(Component c): remove um componente; remove(int index): remove um componente em uma determinada posio; getComponent(int n): obtm o n-simo componente; getComponentes(): obtm um array com todos os componentes.

JComponent

Possui diversos mtodos que so usados por todas as suas subclasses para definio de propriedades dos componentes:

setFont(Font font): altera a fonte usada; isVisible(): herdado da classe Component e retorna verdadeiro se est visvel; setVisible(boolean b): muda o estado de visibilidade; isEnabled(): herdado da classe Component e retorna verdadeiro se est habilitado; setEnabled(boolean b): permite mudar o estado para habilitado ou no; setToolTipText(String text): define um texto para o tool tip; Entre muitos outros...

Subclasses de JComponent

Biblioteca javax.swing; JLabel JtextComponent: JTextArea, JTextField e JPasswordField AbstractButton: JCheckBox e JRadioButton JComboBox

JLabel

rea de exibio para um texto curto, uma imagem ou ambos; Principais mtodos usados so para definir a posio horizontal e vertical do texto e/ou da imagem.

JLabel

Exemplo de utilizao: JLabel label = new JLabel("Meu label (rtulo)"); label.setToolTipText("Isso um label (rtulo)"); label.setIcon(new ImageIcon("imagem.gif")); label.setHorizontalTextPosition(SwingConstants.LEFT); label.setVerticalTextPosition(SwingConstants.BOTTOM);

JTextField

Componente para a edio de uma linha de texto.

JTextField

Exemplo de utilizao: JTextField textField = new JTextField("Digite texto aqui"); textField.setColumns(20); textField.setEditable(false); textField.setText("Texto alterado"); textField.setToolTipText("Dica sobre o texto");

JPasswordField

Componente para a edio de uma linha de texto. Nesse componente, sabe-se que algo est sendo digitado, mas no se pode ver o contedo, pois ele oculto (senha).

JPasswordField

Exemplo de utilizao:
JPasswordField passwordField = new JPasswordField("Texto oculto"); passwordField.setColumns(20); passwordField.setEditable(false); passwordField.setText("123456"); passwordField.setToolTipText("Digite a senha"); System.out.println(new String(passwordField.getPassword()));

JButton

Basicamente um boto para pressionar.

JButton

Exemplo de utilizao: JButton button = new JButton("Meu Boto"); button.setToolTipText("Isso um boto"); button.setEnabled(false); button.setVisible(false);

JCheckBox

Um boto de checar, que pode ser marcado e desmarcado e que mostra seu estado para o usurio.

JCheckBox

Exemplo de utilizao: JCheckBox check = new JcheckBox("Em estoque"); boolean selected = check.isSelected(); check.setSelected(false);

JRadioButton

Um boto de rdio, que pode ser marcado e desmarcado e que mostra seu estado para o usurio. Usado com um ButtonGroup para criar grupos de boto nos quais somente um pode ser selecionado por vez.

JRadioButton

Exemplo de utilizao: JRadioButton yesButton = new JRadioButton("Sim", true); JRadioButton noButton = new JRadioButton("No", false); ButtonGroup radioGroup = new ButtonGroup(); radioGroup.add(yesButton); radioGroup.add(noButton);

JComboBox

Combina um boto e uma lista que cai (dropdown list). O usurio pode selecionar um valor dessa lista.

JComboBox

Exemplo de utilizao: String[] petStrings = { "Bird", "Cat", "Dog", "Rabbit", "Pig" }; JComboBox petList = new JComboBox(petStrings); petList.setSelectedIndex(4); int index = getSelectedIndex(); Object item = getSelectedItem();

Tratamento de Eventos

As GUIs (Interfaces Grficas de Usurio) so baseadas em eventos, isto , geram eventos medida que o usurio interage com os seus componentes; Alguns exemplos comuns de interaes: mover o mouse, clicar no mouse, clicar em um boto, digitar um campo de texto, selecionar um item em um menu, fechar uma janela, etc. O mecanismo de tratamento de eventos tem trs partes:

Origem do evento: componente GUI com o qual o usurio interage; Objeto do evento: encapsula as informaes sobre o evento que ocorreu; Ouvinte (listener) do evento: objeto notificado quando ocorre um evento.

Tratamento de Eventos

Um programador precisa fazer duas coisas fundamentais para tratar um evento de interface grfica:

Registrar um ouvinte de evento para o componente GUI que se espera que v gerar o evento; Implementar um mtodo (ou conjunto de mtodos) para tratamento de evento.

Tratamento de Eventos

Cada listener de eventos espera por tipos especficos de eventos gerados por componentes GUI em um programa; Cada componente GUI tem os seus tipos especficos de eventos que pode gerar; O tratador de eventos um mtodo que chamado em resposta a um tipo de evento em particular; Cada interface listener especifica um ou mais mtodos de tratamento de eventos.

Tratamento de Eventos

Interfaces listener mais comuns:

ActionListener: eventos de ao (boto enter, clique no mouse, etc.); void actionPerformed(ActionEvent e); ItemListener: eventos de item, como combos, radios, check buttons, etc;

void itemStateChanged(ItemEvent e); KeyListener: eventos de teclado;


void keyPressed(KeyEvent e); void keyReleased(KeyEvent e); void keyTyped(KeyEvent e);

Tratamento de Eventos

MouseListener: eventos de mouse interessantes; void mouseClicked(MouseEvent e); void mouseEntered(MouseEvent e); void mouseExited(MouseEvent e); void mousePressed(MouseEvent e); void mouseReleased(MouseEvent e); MouseMotionListener: eventos de movimento de mouse;

void mouseDragged(MouseEvent e); void mouseMoved(MouseEvent e); TextListener: eventos de mudana de texto;

void textValueChanged(TextEvent e);

Referncias

http://download.oracle.com/javase/tutorial/uiswing/components/ http://download.oracle.com/javase/tutorial/uiswing/components/t oplevel.html http://download.oracle.com/javase/tutorial/uiswing/components/l abel.html http://download.oracle.com/javase/tutorial/uiswing/components/ combobox.html http://download.oracle.com/javase/tutorial/uiswing/components/ button.html http://download.oracle.com/javase/tutorial/uiswing/components/t ext.html

Você também pode gostar