Escolar Documentos
Profissional Documentos
Cultura Documentos
Programação de Computadores I
Introdução
Contentores
Componentes
Layouts
Eventos
Exemplos
2
INTRODUÇÃO
Interfaces gráficas são compostas por:
– Contentores
• Janelas, painéis
– Componentes
• botões, menus, caixas de texto
– layouts
• Disposição dos componentes nos contentores
– Eventos
• Rato, teclado, sistema operativo
3
INTRODUÇÃO
(Graphical User Interface - Interface
Gráfica do Utilizador) :
– AWT (Abstract Window Toolkit)
• Infraestrutura mínima de interface gráfica
• É implementada sobre componentes nativos do
sistema operacional.
• Limitado em recurso gráficos
• Diferentes plataformas (Win, Linux e Mac)
possuem aparência diferentes
• Bugs e incompatibilidades entre plataformas
–
4
HISTÓRICO
Java 1.0
– Interface executa de forma medíocre em todas as
plataformas
– Modelo de eventos arcaico
Java 1.1
– Melhora o modelo de eventos por delegação usando o
design pattern Observer
Java 1.2
– Swing substitui totalmente os componentes AWT
– Mantém e estende a interface de eventos e layout
5
COMPONENTES
Todos os elementos de uma aplicação são componentes
Principais métodos (chamados pelo sistema):
– void paint (java.awt.Graphics g)
– void repaint()
– void update (java.awt.Graphics g)
Outros métodos importantes:
– getSize() e setSize ()
– getLocation e setLocation
– getForeground e setForeground
– getFont e setFont
– setEnable
– setVisible
6
CONTENTORES (CONTAINER)
CLASSES CONTENTORAS
Frame (AWT) e JFrame (Swing)
– Servem de base para qualquer aplicação gráfica
– possui uma barra de título e características para receber menus e
outros componentes.
Dialog e JDialog
– Usada para definir janelas de diálogo para entrada de dados
8
Criando nosso frame....
9
Criando nosso Dialog
10
COMPONENTES
Componentes
• Bottons
• ComboBox
• List
• Slidder
• TextField
• Label
• ProgressBar
12
Adicionar Componentes
• Panel
• ScrollPane
• SplitPane
• TabbedPane
• ToolBar
• InternalFrame
14
LAYOUTS
Filosofia da linguagem JAVA
– programas portáveis
– interface adaptável.
Localização dos Componentes
– não é indicada por um par ordenado (x,y)
• C++ builder
– Gestor de Apresentação
• LayoutManager.
– Adapatação automática dos componentes
» Pouco flexíveis para o programador
– Vários layoutManager
– Possibilidade de escrever novos layoutManager
18
FLOWLAYOUT
Coloca os componentes
em fila da esquerda
superior do contentor
para a direita.
Respeita o tamanho
preferido dos
componentes
É o padrão do JPanel. JPanel c =new JPanel();
c.add(new JButton("1"));
c.add(new JTextField(9));
c.add(new JButton("dois"));
c.add(new JButton("três"));
19
GRIDLAYOUT
20
BORDERLAYOUT
Divide um contentor em cinco
regiões:
– BorderLayout.CENTER
– BorderLayout.NORTH {Norte]
– BorderLayout.EAST [Leste]
– BorderLayout.SOUTH [Sul]
– BorderLayout.WEST [Oeste]
Quando se adiciona um
componente, é necessário
especificar em qual das áreas ele
deve ser adicionado.
– Ex.: add(butOK,
BorderLayout.WEST);
O Componente ocupa todo o
espaço!
– Cada região contém apenas um
componente
22
BORDERLAYOUT
23
BOXLAYOUT
Respeita o tamanho
preferido dos
componentes
JPanel c =new JPanel();
Coloca os componentes c .setLayout(new BoxLayout(c,BoxLayout.Y_AXIS));
numa linha ou coluna. c.add(new JButton(”um"));
– BoxLayout.X_AXIS para c.add(new JButton(“dois”));
componentes em linha c.add(new JButton(”três"));
c.add(new JButton(”quatro"));
– BoxLayout.Y_AXIS para
componentes em coluna
24
CardLayout
25
NULL LAYOUT
Layout null
– Utilizado para “desligar” o gestor de layout
• pane.setLayout (null);
– A partir desta instrução é necessário a definição
da posição e o do tamanho de cada componente
• componente.setBounds (x, y, larg, alt);
26
LAYOUTS COMPOSTOS
27
Eventos
Janelas em Ação
28
EVENTOS
29
EVENTOS
30
JAVA.UTIL.EVENTOBJECT
31
Classe Interna e Anônima
TIPOS DE EVENTOS
java.awt.event
– ActionEvent (fonte: componentes de ação)
– MouseEvent (fonte: componentes afectados pelo mouse)
– ItemEvent (fonte: checkboxes e similares)
– AdjustmentEvent (fonte: scrollbars)
– TextEvent (fonte: componentes de texto)
– WindowEvent (fonte: janelas)
– FocusEvent (fonte: componentes em geral)
– KeyEvent (fonte: componentes afetados pelo teclado)
– ...
34
INTERFACE DE EVENTOS
35
ADAPTERS
Alguns listeners possuem uma classe Adapter que
implementa todos os métodos, sem instruções
– Implementação vazia: {}
– Só existe para listeners que têm mais de um método
São úteis quando um Ouvinte precisa implementar
apenas um dos vários métodos de um Listener
– Pode sobrepor a implementação desejada do método do
Adapter e não precisa se preocupar com os outros
– Não são úteis em ouvintes que já estendem outras classes
ou quando implementam diferentes listeners
• Eliminação de métodos
O nome do adapter é semelhante ao do Listener
– MouseListener: MouseAdapter
– WindowListener: WindowAdapter
36
JTABLE
Javax.swing.table
Flexível
Aceita edição de dados, outros componentes,
reorganização de colunas, drag and drop,
ordenação, etc.
Precisa de um TableModel, que representa os
dados a serem exibidos.
JTABLE
TABLEMODEL
Responsável por devolver para a tabela os dados
necessários para exibição. Há implementações com
Vectors ou Object[][]. Ou o que é mais comum,
podemos criar nosso próprio estendendo da
classe AbstractTableModel.
Essa classe tem três métodos abstratos que somos
obrigados a implementar:
– getColumnCount - devolve a quantidade de colunas
– getRowCount - devolve a quantidade de linhas
– getValueAt(row, column) - dada uma linha e uma coluna
devolve o valor correspondente.
SETMODEL