2. Objetivo Geral
• Conhecer e manipular os conceitos fundamentais da criação de
interfaces gráficas em Java utilizando as classes JFrame, JPanel e os
seus componentes.
Objetivos Específicos
1.Conhecer as bibliotecas e frameworks existentes para criar interfaces gráficas
em Java, nomeadamente as biblioteca AWT e Swing e as várias componentes
que podemos utilizar.
2.Compreender a hierarquia de uma interface gráfica utilizando o JFrame e o
JPanel
3.Conhecer a classe JFrame e JPanel e compreender o papel destas classes na
criação de interfaces gráficas.
4.Criar e personalizar uma janela gráfica usando JFrame e o JPanel.
5.Adicionar e organizar componentes gráficos numa janela.
3. Recordam-se…
Classe JOptionPane do pacote javax.swing permite criar diferentes tipos de
caixas de diálogo, como mensagens informativas, solicitação de entrada de dados,
escolha de opções, …
import javax.swing.JOptionPane;
public class ModoGrafico {
public static void main(String[] args) {
String nome;
//Mostra uma caixa de diálogo que solicita a entrada de
dados
nome = JOptionPane.showInputDialog(“Insira o seu
nome: “);
String mensagem = “O nome inserido foi “+nome;
//Mostra uma caixa de diálogo com a mensagem
JOptionPane.showMessageDialog(null, mensagem);
}
}
4. Recordam-se…
JOptionPane
showMessageDialog:
Exibe uma caixa de diálogo com uma mensagem informativa.
JOptionPane.showMessageDialog(null, "Olá, mundo!");
showInputDialog:
Solicita uma entrada do utilizador numa caixa de diálogo.
String nome = JOptionPane.showInputDialog("Digite seu nome:");
showOptionDialog:
Exibe uma caixa de diálogo com opções para escolha.
Object[] options = {"Sim", "Não", "Cancelar"};
int escolha = JOptionPane.showOptionDialog(null, "Deseja continuar?",
"Confirmação", JOptionPane.YES_NO_CANCEL_OPTION,
JOptionPane.QUESTION_MESSAGE, null, options, options[2]);
5. Importância das Interfaces Gráficas
Aplicações de consola
Aplicações interfaces
gráficas • proporcionam uma experiência mais interativa
e visualmente atraente para o utilizador final.
• são importante em aplicações que exigem uma
grande quantidade de dados de entrada
introduzidos pelo utilizador ou que exibem
informações complexas de forma organizada.
• Simplicidade
• facilidade de implementação
Aplicações
6. Aplicações Gráficas em JAVA
• AWT (Abstract Window Toolkit): java.awt
• É a biblioteca mais antiga.
• Disponibiliza um conjunto básico de componentes gráficos, como botões, caixas de
texto, etc.
• Swing: javax.swing
• É a biblioteca mais avançada para criar interfaces gráficas em Java.
• Oferece maior flexibilidade e controle sobre a aparência e comportamento dos
componentes.
Todas as classes do pacote javax.swing são
extensão das classes do pacote java.awt.
Para criar aplicações gráficas, temos várias opções de bibliotecas e
frameworks. As principais são:
7. JavaFX:
• JavaFX é uma plataforma de software para desenvolvimento de aplicações para
browser, desktop e dispositivos móveis.
Aplicações Gráficas em JAVA
Java 2D:
• Java 2D é uma API para gráficos 2D de alto desempenho.
8. Uma Interface gráfica em Java é baseada em dois elementos:
Interface Gráfica
● Define um componente de interface.
● Botões, labels, scrollbars, …
● Os componentes devem ser dispostos de modo a tornar a interface
gráfica o mais intuitiva possível.
servem para agrupar e exibir componentes
● Define um componente que pode conter outros componentes.
● Define métodos como add() para adicionar componentes em seu interior.
● Disponibiliza vários gestores de layout que se encontram no pacote
java.awt.
9. 1. top-level container: fornece a área base para que
os outros componentes swing possam ser inseridos.
(ex: JFrame, JWindown JApplet e JDialog)
2. intermediate container: fornece suporte de posicionamento e acessórios
para que outros componentes swing possam ser inseridos. (ex: JPanel,
JScrollPanel, ...)
3. atomic components: entidades auto-suficientes que representam
informações para o utilizador. (ex: JTextField, JButton)
Hierarquia de Containers
11. Principais caraterísticas da biblioteca Swing
1.Componentes Gráficos:
• botões, caixas de texto, rótulos, listas, tabelas, árvores, painéis, entre outros.
2.Look and Feel:
• aparência consistente em diferentes plataformas.
3. Modelo de Eventos:
• para gerir as interações do utilizador.
4. Layout Managers:
• gestores de layout para organizar os componentes dentro de um container.
5. Personalização:
• a aparência e o comportamento dos componentes gráficos de várias maneiras.
Biblioteca Swing
12. Necessidade das Classes JFrame e JPanel
As classes JFrame e JPanel são fundamentais para a criação de interfaces
gráficas em Java.
• .
O JFrame é responsável por
criar e gerir uma janela gráfica,
fornecendo funcionalidades como
controle de tamanho, posição e
fecho da janela. Serve como o
container principal para os
componentes da interface gráfica.
o JPanel é utilizado para
organizar e agrupar componentes
gráficos dentro de uma janela.
Funciona como um container para
outros componentes, permitindo a
criação de layouts complexos e a
organização eficiente dos
elementos da interface-
13. JFrame – contentor que consiste numa janela à qual se podem adicionar outros
componentes. É uma janela com uma barra de título, uma borda e botões de.
Construtor Descrição
JFrame() Constrói uma janela sem título.
JFrame(String titulo)
Constrói uma janela com o título indicado
no parâmetro.
14. Principais Funções da Classe JFrame
1.Criação de Janelas: através da instância de um objeto JFrame ou extendendo a
classe a JFrame
2.Controle de Tamanho e Posição: especificar o tamanho e a posição inicial da
janela utilizando métodos como setSize(), setBounds() e setLocationRelativeTo().
3.Manipulação de Eventos: Disponibiliza métodos para trabalhar com eventos de
janela, como fecho, redimensionamento e foco.
4.Adição de Componentes: adicionar diferentes componentes gráficos, como
botões, caixas de texto e rótulos, à janela JFrame utilizando métodos como
add().
5.Exibição da Janela: Por fim, a janela JFrame é exibida na tela utilizando o
método setVisible(true), tornando-a visível para o utilizador.
15. Métodos e atributos da classe JFrame
Métodos:
1.setTitle(String title): Define o título da janela.
2.setSize(int width, int height): Define o tamanho da janela em
pixels, especificando largura e altura.
3.setDefaultCloseOperation(int operation): Define a operação
padrão ao fechar a janela. Os valores possíveis para "operation"
incluem
JFrame.EXIT_ON_CLOSE, JFrame.DISPOSE_ON_CLOSE,
JFrame.DO_NOTHING_ON_CLOSE, entre outros.
16. JPanel – contentor que consiste numa janela à qual se podem adicionar outros
componentes contentor que consiste num painel ao qual se podem adicionar
outros componentes. Este por sua vez é adicionado a uma janela (JFrame). tes. É
uma janela com uma barra de título e uma borda.
Construtor Descrição
JPanel() Constrói um painel.
JPanel (LayoutManager layout)
Constrói um painel associado a um
determinado gestor de layout.
17. 1. Organização de Componentes: permite organizar componentes em
layouts complexos de forma eficiente.
2. Personalização Visual: permite personalizar a aparência visual de um
JPanel, definindo cores de fundo, bordas e outros atributos visuais.
3. Divisão de Interfaces: O uso de múltiplos JPanels pode facilitar a divisão
lógica de uma interface gráfica em diferentes áreas ou seções, tornando o
código mais organizado e fácil de manter.
Principais Funções da Classe JPanel
18. Exercício Prático
Implemente uma aplicação em Java simples que utiliza JFrame
para exibir uma janela básica.
Passo 1: Configuração do Projeto
•Crie um novo projeto Java com o nome aula1_IG.
Passo 2: Criação da Classe Principal
•Crie uma nova classe Java e dê-lhe a ela um nome
significativo, como por exemplo "MinhaJanela".
19. Exercício Prático (cont.)
Passo 3: Implementação da Janela Gráfica
•Crie uma nova instancia com o nome janela da classe
JFrame;
•Defina o tamanho da janela utilizando o método setSize().
•Especifique a operação padrão ao fechar a janela utilizando
o método setDefaultCloseOperation().
•Torne a janela visível utilizando o método setVisible().
20. MJanela.setSize(300,200); // tamanho da janela (largura, altura)
import javax.swing.JFrame;
public class MinhaJanela {
public MinhaJanela(){
JFrame MJanela= new JFrame();
MJanela.setTitle("A minha janela"); // título da janela
MJanela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
MJanela.setVisible(true); // Torna a janela visível
}
public static void main(String[] args){
new MinhaJanela();
}
}
21. Ou
setSize(300,200); // tamanho da janela (largura, altura)
import javax.swing.JFrame;
public class MinhaJanela1 extends JFrame {
public MinhaJanela1(){
setTitle("A minha janela"); // título da janela
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true); // Torna a janela visível
}
public static void main(String[] args){
new MinhaJanela();
}
}
22. Exercício Prático (cont.)
Passo 4: Implementação do painel
•Crie uma nova instancia com o nome painel da classe
Jpanel (JPanel painel= new JPanel();
•Crie dois botões YES e NO. JButton botao1= new JButton("Yes");
JButton botao2= new JButton("No"); )
• Adicione os dois botões ao painel. painel.add(botao1);
painel.add(botao2);
• Torne o painel visível utilizando o método setVisible().
• Adicione o painel à janela getContentPane().add(painel) ;
• Torne a janela visível utilizando o método setVisible().
23. import javax.swing.*;
public class MinhaJanela1Painel extends JFrame{
public MinhaJanela1Painel(){
setTitle("A Minha Janela"); // título da janela
setSize(300, 200); // tamanho da janela (largura, altura)
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // operação ao fechar a janela
setLocationRelativeTo(null); // a posição da janela como centralizada na tela
JPanel painel= new JPanel(); // criar um JPanel
JButton botao1= new JButton("Yes"); // criar um botão
JButton botao2= new JButton("No"); // criar um botão
painel.add(botao1); // adicionar botão ao painel
painel.add(botao2); // adicionar botão ao painel
painel.setVisible(true); // Torna o painel visível
getContentPane().add(painel) ; // adicionar painel à janela
setVisible(true); // Torna a janela visível
}
public static void main(String[] args){
new MinhaJanela1Painel();
}
24. Componentes – JLabel
JLabel – componente que consta de um rótulo de texto.
Pode ser adicionado a um contentor (JFrame ou JPanel).
Construtor Descrição
JLabel() Constrói um rótulo sem texto.
JLabel(String texto)
Constrói um rótulo com o texto indicado no
parâmetro.
JLabel (Icon icone)
Constrói um rótulo com a imagem indicada no
parâmetro.
JLabel(String texto, int alinhaHoriz)
Constrói um rótulo com o texto e o alinhamento* do
mesmo, indicados nos parâmetros.
JLabel(Icon icone, int alinhaHoriz)
Constrói um rótulo com a imagem e o alinhamento
da mesma, indicados nos parâmetros.
JLabel(String texto, Icon icone, int alinhaHoriz)
Constrói um rótulo com o texto, a imagem e o
alinhamento dos mesmos, indicados nos parâmetros.
25. Componentes – JTextField (1)
JTextField – componente que consta de um campo de texto editável com uma
única linha. Habitualmente utiliza-se em conjunto com um rótulo (JLabel). Pode ser
adicionado a um contentor (JFrame ou JPanel).
26. Construtor Descrição
JTextField() Constrói um campo de texto.
JTextField(int colunas)
Constrói um campo de texto com o número de colunas
indicado no parâmetro.
JTextField(String texto)
Constrói um campo de texto que contém, como valor por
predefinição, o texto indicado no parâmetro.
JTextField(String texto, int colunas)
Constrói um campo de texto que contém, como valor por
predefinição, o texto indicado no parâmetro. A largura do
campo é definida pelo número de colunas também indicadas
no parâmetro.
Componentes – JTextField (2)
27. JTextArea – componente que consta de um campo de texto editável com diversas
linhas. Habitualmente utiliza-se em conjunto com um JScrollPane para que as barras de
rolamento direita e inferior apareçam quando necessário. Pode ser adicionado a um
contentor (JFrame ou JPanel).
Componentes – JTextArea (1)
28. Construtor Descrição
JTextArea() Constrói uma área de texto com dimensão 0.
JTextArea(String texto)
Constrói uma área de texto que contém, como valor por
predefinição, o texto indicado no parâmetro.
JTextArea(int linhas, int colunas)
Constrói uma área de texto com o número de linhas e de colunas
indicados nos parâmetros.
JTextArea(String texto, int linhas, int
colunas)
Constrói uma área de texto que contém, como valor por
predefinição, o texto indicado no parâmetro. As dimensões da
área são definidas pelo número de linhas e de colunas também
indicadas no parâmetro.
Componentes – JTextArea (2)
29. Componentes – JButton
JButton – componente que consiste num botão em forma
rectangular. Pode ser adicionado a um contentor (JFrame ou
JPanel).
Construtor Descrição
JButton() Constrói um botão sem texto e sem imagem.
JButton(String texto)
Constrói um botão com o texto indicado no
parâmetro.
JButton(String texto, Icon
icone)
Constrói um botão com o texto e a imagem
indicados no parâmetro.
JButton(Icon icone)
Constrói um botão com a imagem indicada no
parâmetro.
30.
31. Exercício Prático (cont.)
• Alterar o título
• Alterar o tamanho
• Alterar a posição (centro)
• o ícone da janela,
• Definir o layout da janela
• Adicionar um rótulo à janela
• Adicionar um botão à janela
• Alterar a cor
• Definir o tamanho com base nos
tamanhos dos subcomponentes.
• set.Title();
•set.Size();
•setLocationRelativeTo(null);
•setIconImage(new ImageIcon(“C:...icon.jpg”).getImage());
•setLayout(new FlowLayout());
•JLabel label = new JLabel("Olá, mundo!");
add(label);
•JButton button = new JButton("Clique aqui"); add(button);
•setBackground(color.cyan);
•pack();
Passo 6: Experimentação
32. import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JButton;
import javax.swing.ImageIcon;
public class MinhaJanela2 extends JFrame{
public MinhaJanela2(){
super("A Minha Janela"); // título da janela
setSize(500, 300); // tamanho da janela (largura, altura)
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // operação ao fechar a janela
setLocationRelativeTo(null); // a posição da janela como centralizada na tela
setIconImage(new ImageIcon("D:ANAESCOLAS2023-2024 AEF2023-2024 AEF11ºPSI -
GPI22M11 – Programação Orientada a Objetos Avançada
(50)Projetosaula1_IGicon1.jpg").getImage());
JLabel rotulo= new JLabel("Isto é um rótulo");
add(rotulo);
JButton botao = new JButton("Clique aqui!");
add(botao);
setVisible(true); // Torna a janela visível
}
public static void main(String[] args){
new MinhaJanela2();}
}
}