Académique Documents
Professionnel Documents
Culture Documents
Console Padrão
• Saída de Dados
Para que possamos mostrar informações no console padrão (vídeo), é
necessário usar o objeto System.out em conjunto com o método
println().
System.out.println(“Meu primeiro exemplo executável”);
• Entrada de Dados
O Java só permite a entrada de Strings, desta forma, para que
possamos informar valores numéricos é necessário fazer uma conversão
de String para o tipo numérico desejado. A leitura de dados é feita
utilizando um objeto da classe InputStream (fluxo de entrada), ou suas
classes derivadas.
Linguagem Java Entrada e Saída de Dados
Console Padrão
• Entrada de Dados
Para que seja obtido um valor do teclado em um programa Java é necessário
declarar um local de armazenamento. Para que isso seja realizado é
necessário que o programa crie um objeto do tipo BufferedReader, como
pode ser visto (b é um objeto da classe BufferedReader que irá armazenar um
InputStream – fluxo de entrada – lido do console padrão – teclado – como um String):
BufferedReader b = new BufferedReader(new InputStreamReader(System.in));.
Quando este valor tem de ser convertido para um tipo primitivo usa-se os
métodos de conversão, como exemplificado a seguir.
int idade = Integer.valueOf( b.readLine() ).intValue();
Linguagem Java Entrada e Saída de Dados
Console Padrão
Console Padrão
import java.io.*;
public class Palavra {
private String valor;
public void setValor()throws java.io.IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
System.out.println("Digite a palavra ");
valor = bf.readLine();
}
public int retornaNumeroLetras(){
return valor.length();
}
public static void main(String[] args) throws java.io.IOException{
Palavra p = new Palavra();
p.setValor();
System.out.println("Esta palavra tem "+p.retornaNumeroLetras()+" letras.");
}
}
Linguagem Java Entrada e Saída de Dados
O primeiro passo de um aplicativo Swing é gerar uma classe que seja uma
subclasse de JFrame (um Frame é uma janela de alto nível).
import java.awt.event.*;
import javax.swing.*;
public class Framework extends JFrame{
public Framework( ){
}
public static void main (String args[]){ Inclui os componentes aqui
JFrame frame = new Framework();
WindowListener l = new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
}; Tratamento de eventos
frame.addWindowListener(l);
frame.pack(); Redimensionar para conter
frame.setVisible(true); todos componentes e tornar
} visível o quadro
}
Linguagem Java Entrada e Saída de Dados
Componentes
JLabel
JTextField
JTextArea
JCheckBox
JButton
JComboBox
JOptionPane
Linguagem Java Entrada e Saída de Dados
import java.awt.event.*;
import javax.swing.*;
public class Framework extends JFrame{
Objeto JButton é criado
public Framework( ){ com um nome
String nome ="Botao de exemplo";
JButton meuBotao1 = new JButton(nome); Objeto Jpanel é criado
JPanel painel = new JPanel(); e o botão é adicionado
painel.add(meuBotao1); a ele
setContentPane(painel); setContentPane é utilizado
} para transformar o painel
em painel de conteúdo do
...
quadro (Frame)
Linguagem Java Entrada e Saída de Dados
public Framework( ){
JLabel identificador = new JLabel("Digite seu nome");
JTextField texto = new JTextField(20);
JPanel painel = new JPanel(); Criação de um label e
de um objeto de campo de
painel.add(identificador);
texto (JTextField).
painel.add(texto); Adiciona o label e depois o
setContentPane(painel); objeto TextField no painel
} que é um JPanel
...
Linguagem Java Entrada e Saída de Dados
public Framework( ){
JPanel painel = new JPanel();
JLabel idArea = new JLabel("Escreva sua reclamação");
JTextArea area = new JTextArea(10,10);
painel.add(idArea);
painel.add(area); Criação de um objeto
setContentPane(painel); JTextArea de 10 linhas e
} 10 colunas. Foi necessário
criar também um rótulo
(label) para identificar o
objetivo do objeto
Linguagem Java Entrada e Saída de Dados
public Framework( ){
JCheckBox opcao1 = new JCheckBox("Negrito");
JCheckBox opcao2 = new JCheckBox("Itálico", true);
JPanel painel = new JPanel();
painel.add(opcao1);
painel.add(opcao2);
setContentPane(painel);
} Criação de dois objetos
JCheckBox sendo que o
objeto opcao2 será por
default selecionado.
Linguagem Java Entrada e Saída de Dados
public Framework( ){
ButtonGroup opcao = new ButtonGroup();
JCheckBox homem = new JCheckBox("Masculino", true);
JCheckBox mulher = new JCheckBox("Feminino", false);
opcao.add(homem);
opcao.add(mulher); Cria um objeto ButtonGroup
JLabel sexo = new JLabel("Sexo :"); para que este controle que
JPanel painel = new JPanel(); apenas um dos itens seja
painel.add(sexo); selecionado. Em seguida
painel.add(homem); adiciona os objetos
JCheckBox ao objeto
painel.add(mulher);
ButtonGroup.
setContentPane(painel);
}
Linguagem Java Entrada e Saída de Dados
public Framework ( ){
JComboBox lista = new JComboBox();
lista.addItem("Casado");
lista.addItem("Solteiro");
lista.addItem("Divorciado");
lista.addItem("Viuvo");
lista.setEditable(false);
JPanel painel = new JPanel();
painel.add(lista);
setContentPane(painel);
Método que garante que
}
apenas os valores
existentes serão
selecionados
Linguagem Java Entrada e Saída de Dados
public Framework( ){
JPanel painel = new JPanel();
JLabel identificadorArea = new JLabel("Escreva sua reclamação");
JTextArea area = new JTextArea(10,10);
JScrollPane areaRolagem = new JScrollPane(area);
identificadorArea.setLabelFor(areaRolagem);
painel.add(identificadorArea);
painel.add(areaRolagem);
setContentPane(painel);
}
Algoritmos de Layout
• Controlam posicionamento e dimensão de componentes.
• Podem ser combinados para obter qualquer configuração.
• Podem ser criados implementando a interface LayoutManager.
• É impossível controlar tamanho e posição de componentes se um
LayoutManager estiver sob controle.
Gerenciadores de Layout
• Um gerenciador de layout determina como os componentes serão
organizados.
• É possível desligar layouts e, neste caso, é preciso definir posição e
tamanho de cada componente.
painel.setLayout(null)
componente.setBounds(x,y, largura, altura)
Linguagem Java Entrada e Saída de Dados
Linhas e
colunas
Linguagem Java Entrada e Saída de Dados
Combinação de Layouts
• Componentes podem ser combinados em recipientes (como JPanel)
para serem tratados como um conjunto.
Linguagem Java Entrada e Saída de Dados
Eventos
Eventos
• Eventos em Java são objetos da subclasse de java.util.EventObject.
• Todo evento tem um objeto que é sua fonte.
Object fonte= evento.getSource();
• Métodos de ouvintes (listeners) que desejam tratar eventos, recebem
eventos como argumento. argumento
public void actionPerformed(ActionEvent e) {
Object obSource = e.getSource();
System.out.println(“O evento ocorreu em ” + obSource.toString());
}
• Ouvintes precisam ser registrados nas fontes.
botao.addActionListener(ouvinte);
/*neste caso o ouvinte deve ter o método da interface ActionListener,
public void actionPerformed(ActionEvent e) implementado. */
Linguagem Java Entrada e Saída de Dados
Eventos
• Divididos em categorias.
• ActionEvent (fonte: componentes de ação)
• MouseEvent (fonte: componentes afetados pelo mouse)
• ItemEvent (fonte: checkboxes e similares)
• TextEvent (fonte: componentes de texto)
• WindowsEvent (fonte: janelas)
• FocusEvent (fonte: componentes em geral)
• KeyEvent (fonte: componentes afetados pelo teclado)
• e outros
Linguagem Java Entrada e Saída de Dados
Eventos
• Cada evento tem uma interface Listener correspondente que possui
métodos padrão para tratá-lo.
• ActionEvent : Interface ActionListener
• MouseEvent : Interface MouseListener
• ItemEvent : Interface ItemListener
• TextEvent : Interface TextListener
• WindowsEvent : Interface WindowsListener
• FocusEvent : Interface FocusListener
• KeyEvent : Interface KeyListener
(segue um padrão)
• XXXEvent : Interface XXXListener
Linguagem Java Entrada e Saída de Dados
Eventos
• A classe ouvinte tem de implementar o(s) listener(s) desejado(s).
public class MinhaClasse implements ActionListener, FocusListener {
• A classe ouvinte precisa implementar os métodos das interfaces
Listener que ela declarou.
public void actionPerformed (ActionEvent e) { } Interface ActionListener
public void focusGained (ItemEvent evt ){ } Interface FocusListener
public void focusLost (ItemEvent evt ){ } Interface FocusListener
Eventos
• Depois que um componente que deve receber o evento (fonte) for
criado é necessário que o receptor seja incluído como ouvinte.
Assim, após a criação de um componente (fonte), os seguintes métodos
podem ser associados a ele:
addActionListener( ), addAdjustmentListener( ),
addFocusListener(), addItemListener( ), addKeyListener( ),
addMouseListener( ), addMouseMotionListener( ),
addWindowsListener( ).
Eventos - Adapter
• Facilitam a implementação de classes tratadoras de eventos.
• O programador não precisa implementar todos os métodos da
interface.
• Adaptadoras implementam as interfaces, tendo métodos vazios para
cada um dos métodos da interface
• Definir uma subclasse de adapter redefinindo os métodos que
interessam.
• O nome do adapter é semelhante ao do Listener.
MouseListener : MouseAdapter
WindowListener: WindowAdapter, ....
Linguagem Java Entrada e Saída de Dados
interface WindowListener {
public void windowActivated(WindowEvent evt);
public void windowClosed(WindowEvent evt);
public void windowClosing(WindowEvent evt);
public void windowDeactivated(WindowEvent evt);
public void windowDeiconified(WindowEvent evt);
public void windowIconified(WindowEvent evt);
public void windowOpened(WindowEvent evt);
}