Post on 07-Feb-2019
PROGRAMAÇÃO ORIENTADA AOBJETOS- INTERFACES GRÁFICASProf. Angelo Augusto Frozza, M.Sc.frozza@ifc-camboriu.edu.br
ROTEIRO
2. Programação visual com a IDE Netbeans
Projetos
Tipos de projetos
Desenvolvimento de aplicações rápidas (RAD)
Desenvolvimento visual
APLICAÇÕES GRÁFICAS - GUI
Primeiro faça uma análise das seguintes interfaces:
ConsoleTeste.java Calculadora.java FrameCalculadora.java
Em se tratando de usabilidade, Em se tratando de usabilidade, qual das interfaces é a mais qual das interfaces é a mais
atraente e amigável?atraente e amigável?
APLICAÇÕES GRÁFICAS COM A SWING
GUI – Graphical User Interface Oferece uma interface mais simples e
intuitiva para o usuários.
Cada Sistema Operacional pode oferecer GUIs com aparências distintas: COM da Microsoft; Presentation da IBM; NeWS da Sun; X-Window System da MIT
APLICAÇÕES GRÁFICAS COM A SWING
Java no desenvolvimento de aplicações gráficas:
Oferece capacidades únicas que, sem modificações ou recompilação, podem ser executadas em diferentes ambientes gráficos.
COMPONENTES E A SWING
Componente GUI:
É um objeto visual com o qual o usuário pode interagir através do teclado ou mouse;
São também chamados de widgets –Window gadgets – dispositivos de janela:BotõesCaixa de entrada de textoCaixas de listaCaixas de seleçãoBarras de rolagem etc.
COMPONENTES E A SWING
Java oferece uma ampla biblioteca de componentes GUI;
Os componentes estão disponíveis na forma de classes pertencentes ao pacote javax.swing;
A Swing oferece classes para: Renderização e obtenção de informações do
sistema gráfico.
CONSTRUÇÃO DE UMA APLICAÇÃO GRÁFICA
Passos da implementação:
1º Instanciação do componente selecionado;
2º Adição do componente na interface;
3º Registro dos métodos processadores de eventos.
CONSTRUÇÃO DE UMA APLICAÇÃO GRÁFICA
1º Instanciação do componente Cada componente a ser adicionado na
interface deve ser instanciado individualmente.
Exemplo:
private Button bt1;private Button bt2;...bt1 = new Button(“Ok”);bt2 = new Button(“Cancelar”);
CONSTRUÇÃO DE UMA APLICAÇÃO GRÁFICA
2º Adição do componente na interface Cada um dos componentes deve ser
adicionado em um container; É necessário especificar o posicionamento do
componente através de um gerenciador de layout;
Exemplo:add(bt1); //uso do layout defaultadd(bt2, BorderLayout.SOUTH) // uso do Border Layout
CONSTRUÇÃO DE UMA APLICAÇÃO GRÁFICA
3º Registro dos métodos processadores de eventos:
Narrações das interações do usuário com a aplicação através do teclado ou mouse;
Devem ser adicionados métodos especiais (event listeners) na aplicação para processar a interação do usuário;
Os métodos devem ser associados aos componentes que reagem à interação com o usuário.
CONSTRUÇÃO DE UMA APLICAÇÃO GRÁFICA
3º Registro dos métodos processadores de eventos (continuação):
Exemplo:
bt1.addActionListener(this);bt2.addActionListener(new ButtonHandler());
CONSTRUÇÃO DE UMA APLICAÇÃO GRÁFICA
COMPONENTES BÁSICOS
•Frame (janela completa)
•Contêineres Jpanel (Painel)...
•ControlesJButton (botão)JCheckbox (caixa de opção)JScrollBar (barra de rolagem)JTextField (caixa de entrada de texto)...
•JanelasJDialog (janela de diálogo)JScrollPane (lista)...
•MenusJMenuBar (barra de menus)
ELEMENTOS DA INTERFACE
JFRAME
Pacote: javax.swing Classe: JFrame
É o principal/primeiro componente;
Utilizado para definir o espaço principal no qual estará a interface com o usuário;
Principais propriedades: title name
CONTAINERS
Pacote: javax.swing Classe: JPanel
Todo componente de uma interface deve ser colocado dentro de um container;
Existems vários tipos de containers disponíveis;
Principais propriedades: background border
name (nome da variável)
JLABEL
Pacote: javax.swing Classe: JLabel
Também chamado de rótulo de texto.
Utilizado para mostrar mensagens dentro de quaisquer componentes do tipo container;
Este tipo de componente não permite a edição de valores... É simplesmente utilizado para orientar o usuário do sistema e para mostrar resultados –é um elemento passivo.
Veja o Exemplo:FrameLabel.java
JLABEL
Pacote: javax.swing Classe: JLabel
Principais propriedades: name (nome da variável)
text border
JLABEL
Existem métodos adequados para capturar e modificar o conteúdo de um Label:
getText() – captura o conteúdo do rótulo
setText(String) – atribui um novo valor ao rótulo
Outros métodos são oferecidos para manipular um Label.
Veja a API do Java:-Pacote: javax.swing-Classe: JLabel-Métodos
JTEXTFIELD
Pacote: javax.swing Classe: JTextField
Caixa de entrada de texto – caixa de texto;
Permite a edição de valores; O valor sempre será no formato String; Quando houver a necessidade de tratar o valor
em um formato numérico é necessário transformá-lo;
Veja o exemplo:FrameTextField.java
JTEXTFIELD
Pacote: javax.swing Classe: JTextField
Principais propriedades: name (nome da variável)
text
JCOMBOBOX
Pacote: javax.swing Classe: JComboBox
Permite criar caixas de seleção;
Principais propriedades: name (nome da variável)
model
JBUTTON
Pacote: javax.swing Classe: JButton
São painéis rotulados com um texto.
Podem ser acionados, no sentido de provocar a execução de alguma rotina ou seqüência de comandos;
Para que um botão possa responder alguma ação do usuário é necessário programar o evento (tratamento de eventos).
Veja o Exemplo:FrameButton.java
JBUTTON
Pacote: javax.swing Classe: JButton
Principais propriedades: name (nome da variável)
text
JBUTTON
Para tratar um evento é necessário: Implementar a classe ActionListener
public class FrameBotao extends Frameimplements ActionListener
{..}
Adicionar o Listener ao objeto passível de sofrer uma ação:
button1 = new Button(“Pressione aqui”);button1.addActionListener(this);add(button1);
JBUTTON
Para tratar um evento é necessário (continuação):
Implementar o método actionPerformed() e verificar a origem do evento:
public void actionPerformed(ActionEvent e) {// o if irá testar onde ocorreu o eventoif (e.getSource() == button1) {
count++;label1.setText("Botão já foi usado " + count + "
vez(es).");}
}
JBUTTON
E como seria o tratamento de dois (2) botões? Pode ser feito através do mesmo actionPerformed
Veja o Exemplo: FrameButton2.java
JBUTTON
E como seria o tratamento de dois (2) botões? Pode ser feito através do mesmo actionPerformed
if (e.getSource() == button1) {count++;label1.setText("Botão já foi usado " + count + " vez(es).");
}
if (e.getSource() == button2) {JOptionPane.showMessageDialog(null,"Esta aplicação será finalizada...");System.exit(0);
}
JBUTTON
E como seria o tratamento de dois (2) botões? Pode ser feito através do mesmo actionPerformed
if (e.getSource() == button1) {count++;label1.setText("Botão já foi usado " + count + " vez(es).");
}
if (e.getSource() == button2) {JOptionPane.showMessageDialog(null,"Esta aplicação será finalizada...");System.exit(0);
}
Cuidado:tratar muitos eventos (de vários objetos)
no mesmo método actionPerformed,pode tornar o código
muito extensoe ilegível.