![Page 1: PROGRAMAÇÃO RIENTADA A OBJETOS -INTERFACES GRÁFICAS …frozza/2012.2/IA10/IA10-ProgramacaoOO... · APLICAÇÕES GRÁFICAS - GUI Primeiro faça uma análise das seguintes interfaces:](https://reader031.vdocuments.pub/reader031/viewer/2022020216/5c5be77509d3f24f368c896c/html5/thumbnails/1.jpg)
PROGRAMAÇÃO ORIENTADA AOBJETOS- INTERFACES GRÁFICASProf. Angelo Augusto Frozza, [email protected]
![Page 2: PROGRAMAÇÃO RIENTADA A OBJETOS -INTERFACES GRÁFICAS …frozza/2012.2/IA10/IA10-ProgramacaoOO... · APLICAÇÕES GRÁFICAS - GUI Primeiro faça uma análise das seguintes interfaces:](https://reader031.vdocuments.pub/reader031/viewer/2022020216/5c5be77509d3f24f368c896c/html5/thumbnails/2.jpg)
ROTEIRO
2. Programação visual com a IDE Netbeans
Projetos
Tipos de projetos
Desenvolvimento de aplicações rápidas (RAD)
Desenvolvimento visual
![Page 3: PROGRAMAÇÃO RIENTADA A OBJETOS -INTERFACES GRÁFICAS …frozza/2012.2/IA10/IA10-ProgramacaoOO... · APLICAÇÕES GRÁFICAS - GUI Primeiro faça uma análise das seguintes interfaces:](https://reader031.vdocuments.pub/reader031/viewer/2022020216/5c5be77509d3f24f368c896c/html5/thumbnails/3.jpg)
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?
![Page 4: PROGRAMAÇÃO RIENTADA A OBJETOS -INTERFACES GRÁFICAS …frozza/2012.2/IA10/IA10-ProgramacaoOO... · APLICAÇÕES GRÁFICAS - GUI Primeiro faça uma análise das seguintes interfaces:](https://reader031.vdocuments.pub/reader031/viewer/2022020216/5c5be77509d3f24f368c896c/html5/thumbnails/4.jpg)
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
![Page 5: PROGRAMAÇÃO RIENTADA A OBJETOS -INTERFACES GRÁFICAS …frozza/2012.2/IA10/IA10-ProgramacaoOO... · APLICAÇÕES GRÁFICAS - GUI Primeiro faça uma análise das seguintes interfaces:](https://reader031.vdocuments.pub/reader031/viewer/2022020216/5c5be77509d3f24f368c896c/html5/thumbnails/5.jpg)
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.
![Page 6: PROGRAMAÇÃO RIENTADA A OBJETOS -INTERFACES GRÁFICAS …frozza/2012.2/IA10/IA10-ProgramacaoOO... · APLICAÇÕES GRÁFICAS - GUI Primeiro faça uma análise das seguintes interfaces:](https://reader031.vdocuments.pub/reader031/viewer/2022020216/5c5be77509d3f24f368c896c/html5/thumbnails/6.jpg)
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.
![Page 7: PROGRAMAÇÃO RIENTADA A OBJETOS -INTERFACES GRÁFICAS …frozza/2012.2/IA10/IA10-ProgramacaoOO... · APLICAÇÕES GRÁFICAS - GUI Primeiro faça uma análise das seguintes interfaces:](https://reader031.vdocuments.pub/reader031/viewer/2022020216/5c5be77509d3f24f368c896c/html5/thumbnails/7.jpg)
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.
![Page 8: PROGRAMAÇÃO RIENTADA A OBJETOS -INTERFACES GRÁFICAS …frozza/2012.2/IA10/IA10-ProgramacaoOO... · APLICAÇÕES GRÁFICAS - GUI Primeiro faça uma análise das seguintes interfaces:](https://reader031.vdocuments.pub/reader031/viewer/2022020216/5c5be77509d3f24f368c896c/html5/thumbnails/8.jpg)
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.
![Page 9: PROGRAMAÇÃO RIENTADA A OBJETOS -INTERFACES GRÁFICAS …frozza/2012.2/IA10/IA10-ProgramacaoOO... · APLICAÇÕES GRÁFICAS - GUI Primeiro faça uma análise das seguintes interfaces:](https://reader031.vdocuments.pub/reader031/viewer/2022020216/5c5be77509d3f24f368c896c/html5/thumbnails/9.jpg)
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”);
![Page 10: PROGRAMAÇÃO RIENTADA A OBJETOS -INTERFACES GRÁFICAS …frozza/2012.2/IA10/IA10-ProgramacaoOO... · APLICAÇÕES GRÁFICAS - GUI Primeiro faça uma análise das seguintes interfaces:](https://reader031.vdocuments.pub/reader031/viewer/2022020216/5c5be77509d3f24f368c896c/html5/thumbnails/10.jpg)
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
![Page 11: PROGRAMAÇÃO RIENTADA A OBJETOS -INTERFACES GRÁFICAS …frozza/2012.2/IA10/IA10-ProgramacaoOO... · APLICAÇÕES GRÁFICAS - GUI Primeiro faça uma análise das seguintes interfaces:](https://reader031.vdocuments.pub/reader031/viewer/2022020216/5c5be77509d3f24f368c896c/html5/thumbnails/11.jpg)
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.
![Page 12: PROGRAMAÇÃO RIENTADA A OBJETOS -INTERFACES GRÁFICAS …frozza/2012.2/IA10/IA10-ProgramacaoOO... · APLICAÇÕES GRÁFICAS - GUI Primeiro faça uma análise das seguintes interfaces:](https://reader031.vdocuments.pub/reader031/viewer/2022020216/5c5be77509d3f24f368c896c/html5/thumbnails/12.jpg)
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());
![Page 13: PROGRAMAÇÃO RIENTADA A OBJETOS -INTERFACES GRÁFICAS …frozza/2012.2/IA10/IA10-ProgramacaoOO... · APLICAÇÕES GRÁFICAS - GUI Primeiro faça uma análise das seguintes interfaces:](https://reader031.vdocuments.pub/reader031/viewer/2022020216/5c5be77509d3f24f368c896c/html5/thumbnails/13.jpg)
CONSTRUÇÃO DE UMA APLICAÇÃO GRÁFICA
![Page 14: PROGRAMAÇÃO RIENTADA A OBJETOS -INTERFACES GRÁFICAS …frozza/2012.2/IA10/IA10-ProgramacaoOO... · APLICAÇÕES GRÁFICAS - GUI Primeiro faça uma análise das seguintes interfaces:](https://reader031.vdocuments.pub/reader031/viewer/2022020216/5c5be77509d3f24f368c896c/html5/thumbnails/14.jpg)
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)
![Page 15: PROGRAMAÇÃO RIENTADA A OBJETOS -INTERFACES GRÁFICAS …frozza/2012.2/IA10/IA10-ProgramacaoOO... · APLICAÇÕES GRÁFICAS - GUI Primeiro faça uma análise das seguintes interfaces:](https://reader031.vdocuments.pub/reader031/viewer/2022020216/5c5be77509d3f24f368c896c/html5/thumbnails/15.jpg)
ELEMENTOS DA INTERFACE
![Page 16: PROGRAMAÇÃO RIENTADA A OBJETOS -INTERFACES GRÁFICAS …frozza/2012.2/IA10/IA10-ProgramacaoOO... · APLICAÇÕES GRÁFICAS - GUI Primeiro faça uma análise das seguintes interfaces:](https://reader031.vdocuments.pub/reader031/viewer/2022020216/5c5be77509d3f24f368c896c/html5/thumbnails/16.jpg)
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
![Page 17: PROGRAMAÇÃO RIENTADA A OBJETOS -INTERFACES GRÁFICAS …frozza/2012.2/IA10/IA10-ProgramacaoOO... · APLICAÇÕES GRÁFICAS - GUI Primeiro faça uma análise das seguintes interfaces:](https://reader031.vdocuments.pub/reader031/viewer/2022020216/5c5be77509d3f24f368c896c/html5/thumbnails/17.jpg)
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)
![Page 18: PROGRAMAÇÃO RIENTADA A OBJETOS -INTERFACES GRÁFICAS …frozza/2012.2/IA10/IA10-ProgramacaoOO... · APLICAÇÕES GRÁFICAS - GUI Primeiro faça uma análise das seguintes interfaces:](https://reader031.vdocuments.pub/reader031/viewer/2022020216/5c5be77509d3f24f368c896c/html5/thumbnails/18.jpg)
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
![Page 19: PROGRAMAÇÃO RIENTADA A OBJETOS -INTERFACES GRÁFICAS …frozza/2012.2/IA10/IA10-ProgramacaoOO... · APLICAÇÕES GRÁFICAS - GUI Primeiro faça uma análise das seguintes interfaces:](https://reader031.vdocuments.pub/reader031/viewer/2022020216/5c5be77509d3f24f368c896c/html5/thumbnails/19.jpg)
JLABEL
Pacote: javax.swing Classe: JLabel
Principais propriedades: name (nome da variável)
text border
![Page 20: PROGRAMAÇÃO RIENTADA A OBJETOS -INTERFACES GRÁFICAS …frozza/2012.2/IA10/IA10-ProgramacaoOO... · APLICAÇÕES GRÁFICAS - GUI Primeiro faça uma análise das seguintes interfaces:](https://reader031.vdocuments.pub/reader031/viewer/2022020216/5c5be77509d3f24f368c896c/html5/thumbnails/20.jpg)
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
![Page 21: PROGRAMAÇÃO RIENTADA A OBJETOS -INTERFACES GRÁFICAS …frozza/2012.2/IA10/IA10-ProgramacaoOO... · APLICAÇÕES GRÁFICAS - GUI Primeiro faça uma análise das seguintes interfaces:](https://reader031.vdocuments.pub/reader031/viewer/2022020216/5c5be77509d3f24f368c896c/html5/thumbnails/21.jpg)
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
![Page 22: PROGRAMAÇÃO RIENTADA A OBJETOS -INTERFACES GRÁFICAS …frozza/2012.2/IA10/IA10-ProgramacaoOO... · APLICAÇÕES GRÁFICAS - GUI Primeiro faça uma análise das seguintes interfaces:](https://reader031.vdocuments.pub/reader031/viewer/2022020216/5c5be77509d3f24f368c896c/html5/thumbnails/22.jpg)
JTEXTFIELD
Pacote: javax.swing Classe: JTextField
Principais propriedades: name (nome da variável)
text
![Page 23: PROGRAMAÇÃO RIENTADA A OBJETOS -INTERFACES GRÁFICAS …frozza/2012.2/IA10/IA10-ProgramacaoOO... · APLICAÇÕES GRÁFICAS - GUI Primeiro faça uma análise das seguintes interfaces:](https://reader031.vdocuments.pub/reader031/viewer/2022020216/5c5be77509d3f24f368c896c/html5/thumbnails/23.jpg)
JCOMBOBOX
Pacote: javax.swing Classe: JComboBox
Permite criar caixas de seleção;
Principais propriedades: name (nome da variável)
model
![Page 24: PROGRAMAÇÃO RIENTADA A OBJETOS -INTERFACES GRÁFICAS …frozza/2012.2/IA10/IA10-ProgramacaoOO... · APLICAÇÕES GRÁFICAS - GUI Primeiro faça uma análise das seguintes interfaces:](https://reader031.vdocuments.pub/reader031/viewer/2022020216/5c5be77509d3f24f368c896c/html5/thumbnails/24.jpg)
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
![Page 25: PROGRAMAÇÃO RIENTADA A OBJETOS -INTERFACES GRÁFICAS …frozza/2012.2/IA10/IA10-ProgramacaoOO... · APLICAÇÕES GRÁFICAS - GUI Primeiro faça uma análise das seguintes interfaces:](https://reader031.vdocuments.pub/reader031/viewer/2022020216/5c5be77509d3f24f368c896c/html5/thumbnails/25.jpg)
JBUTTON
Pacote: javax.swing Classe: JButton
Principais propriedades: name (nome da variável)
text
![Page 26: PROGRAMAÇÃO RIENTADA A OBJETOS -INTERFACES GRÁFICAS …frozza/2012.2/IA10/IA10-ProgramacaoOO... · APLICAÇÕES GRÁFICAS - GUI Primeiro faça uma análise das seguintes interfaces:](https://reader031.vdocuments.pub/reader031/viewer/2022020216/5c5be77509d3f24f368c896c/html5/thumbnails/26.jpg)
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);
![Page 27: PROGRAMAÇÃO RIENTADA A OBJETOS -INTERFACES GRÁFICAS …frozza/2012.2/IA10/IA10-ProgramacaoOO... · APLICAÇÕES GRÁFICAS - GUI Primeiro faça uma análise das seguintes interfaces:](https://reader031.vdocuments.pub/reader031/viewer/2022020216/5c5be77509d3f24f368c896c/html5/thumbnails/27.jpg)
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).");}
}
![Page 28: PROGRAMAÇÃO RIENTADA A OBJETOS -INTERFACES GRÁFICAS …frozza/2012.2/IA10/IA10-ProgramacaoOO... · APLICAÇÕES GRÁFICAS - GUI Primeiro faça uma análise das seguintes interfaces:](https://reader031.vdocuments.pub/reader031/viewer/2022020216/5c5be77509d3f24f368c896c/html5/thumbnails/28.jpg)
JBUTTON
E como seria o tratamento de dois (2) botões? Pode ser feito através do mesmo actionPerformed
Veja o Exemplo: FrameButton2.java
![Page 29: PROGRAMAÇÃO RIENTADA A OBJETOS -INTERFACES GRÁFICAS …frozza/2012.2/IA10/IA10-ProgramacaoOO... · APLICAÇÕES GRÁFICAS - GUI Primeiro faça uma análise das seguintes interfaces:](https://reader031.vdocuments.pub/reader031/viewer/2022020216/5c5be77509d3f24f368c896c/html5/thumbnails/29.jpg)
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);
}
![Page 30: PROGRAMAÇÃO RIENTADA A OBJETOS -INTERFACES GRÁFICAS …frozza/2012.2/IA10/IA10-ProgramacaoOO... · APLICAÇÕES GRÁFICAS - GUI Primeiro faça uma análise das seguintes interfaces:](https://reader031.vdocuments.pub/reader031/viewer/2022020216/5c5be77509d3f24f368c896c/html5/thumbnails/30.jpg)
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.