Escolar Documentos
Profissional Documentos
Cultura Documentos
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
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
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
ActionListener: eventos de ao (boto enter, clique no mouse, etc.); void actionPerformed(ActionEvent e); ItemListener: eventos de item, como combos, radios, check buttons, etc;
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;
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