SlideShare ist ein Scribd-Unternehmen logo
1 von 9
Downloaden Sie, um offline zu lesen
1
Swing
Fernando Goulart
Maristela Holanda
Leila de Fátima Carvalho
Java e Interfaces Gráficas
Desktop WEB Móvel
Dados
Dados
_____________
_____________
_____________
_____________
____________
Outra
Aplicação
ou
Legado
ApresentaApresentaççãoão
NegNegóóciocio
Dados ouDados ou
PersistênciaPersistência
AWT x Swing
Java fornece um suporte para construção de
aplicações gráficas por meio de duas interfaces:
AWT (Abstract Windowing Toolkit) . Inicialmente o
único tipo de ferramentas, até a versão 1.1. Todas as
classes estão no pacote java.awt. É bastante incompleta:
faltam Table, TabbedPane, Slider etc. Dependente de
plataforma (peer-model) e comportamento heterogêneo.
Swing/JFC (Java Foundation Class) – surgiu na versão
JDK1.2. Substituiu AWT, mas ainda compartilham partes
fundamentais (como eventos). Atualmente as classes estão
no pacote javax.swing. São “lightweight components”,
independentes de plataforma.
AWT x Swing/JFC
Há compatibilidade entre os componentes AWT e Swing
Há componentes Swing que herdam de componentes
AWT. Exemplo: o componente JFrame, que fornece a
janela principal da aplicação, é derivado da classe Frame.
Os nomes dos componentes JFC/Swing sempre começam
com “J”.
Não mais utilizar os componentes AWT: usar os
componentes correspondentes criados no Swing.
São dois grandes exemplos de reuso: não é necessário
reescrever código, mas apenas utilizar as funcionalidades
implementadas nesses pacotes.
Os 3 elementos AWT/Swing
Componentes gráficos: são elementos que o
usuário manipula com o mouse ou com o teclado.
Gerenciadores de layout: governam a
maneira pela qual os componentes aparecem na tela.
Eventos: assinalam ações do usuário consideradas
importantes, como o click do mouse em um botão.
Java adota o tipo de programação dirigida por
eventos: um evento ocorrido é tratado por event
listener, uma categoria especial de classes.
Componentes
2
Gerenciadores de layout Eventos
JWindow
Dialog
Frame
JLabel
AbstractButton
JPanel
JRootPane
JDialog
JFrame
JButton
Window
JComponent
ContainerComponent
Hierarquia JComponent – totalmente Swing/JFC
1 - Uma aparência (”pluggable look and feel ”) que pode ser especificada
pelo programador ou (opcionalmente) selecionada pelo usuário em
tempo de execução.
3
JComponent
2 - Diversos tipos de borda, que também definem os limites do
componente.
JComponent
3 - A habilidade para definir o tamanho máximo, mínimo e preferido de
um componente, mesmo se a tela for redimensionada.
4 - ToolTip: faixa de texto que aparece quando o cursor passa sobre o
componente.
JFrame
É o tipo mais especializado de janela Java.
Possui uma barra de título e uma borda.
JFrame é derivado do controle da AWT.
Permite interações através de teclado e
mouse.
Incluir no código: import javax.swing.*;
É um container: pode conter outros
componentes.
JFrame
Possui 5 subcontainers. Por isso, é
ligeiramente incompatível com
java.awt.Frame, que não possui
subcontainers.
um gerenciador de layout é
automaticamente associado a cada um de
seus subcontainers.
Os containers de JFrame
Consulte: http://java.sun.com/products/jfc/tsc/articles/containers/index.html
J
J
ContentPane
Os containers de JFrame
11 -- JRootPaneJRootPane: container principal de JFrame, gerencia os demais
subcontainers.
Consulte:
http://java.sun.com/docs/books/tutorial/uiswing/components/rootpane.html
22 -- JLayeredPaneJLayeredPane: adiciona profundidade a um container, permitindo
sobreposição de componentes, quando necessário. Veja exemplos em:
http://java.sun.com/docs/books/tutorial/uiswing/components/rootpane.
html#layeredpane.
4
Os containers de JFrame
3 - MenuBar: encapsula os conceitos da plataforma para os limites da
barra de menu. Para associar uma barra de menu à janela, chamar
setMenuBar. O gerenciador de layout default é o BoxLayout.
Consulte:
http://java.sun.com/docs/books/tutorial/uiswing/components/menu.html
44 -- GlassPane: o painel de vidro, a vidraça. Permite interceptar ou
impedir eventos de mouse, torna os componentes gráficos inacessíveis,
embora visíveis. Consulte:
http://java.sun.com/docs/books/tutorial/uiswing/components/rootpane.h
tml#glasspane
Os containers de JFrame
55 -- ContentPaneContentPane: é área de trabalho onde adicionamos diretamente nossos
componentes. O gerenciador de layout default é o BorderLayoutBorderLayout. Para obter
este componente, execute objJanela.getContentPane( ). Consulte:
http://java.sun.com/docs/books/tutorial/uiswing/components/toplevel.html
JFrame - exemplo
import javax.swing.JFrame;
public class MeuPrimeiroFrame extends JFrame{
public MeuPrimeiroFrame(){
super("Meu Primeiro JFrame");
this.setSize(200, 200);
this.setVisible(true);
}
public static void main(String[] args) {
MeuPrimeiroFrame frame = new MeuPrimeiroFrame();
}
}
JFrame
import javax.swing.JFrame;
public class MeuSegundoFrame {
JFrame quadro;
public MeuSegundoFrame(){
quadro = new JFrame("Meu Segundo Frame");
quadro.setSize(200,200);
quadro.setVisible(true);
}
public static void main(String args[]){
MeuSegundoFrame janela = new MeuSegundoFrame();
}
}
Interfaces gráficas - boas
práticas
Os atributos de instância devem ter visibilidade
private.
Os métodos de instância devem ter visibilidade
public.
Por legibilidade, declare os atributos
preferencialmente logo no início da classe.
Também podem ser declarados ao final, após
todos os métodos.
Instancie os atributos dentro do construtor, ou
nos métodos correspondentes chamados por ele.
Interfaces gráficas - boas práticas
Configure agrupadamente todas as
características de um atributo. Para tratar o
próximo atributo, salte uma linha e recomece
o mesmo processo.
Deixe para o final da classe a área de
adicionar atributos aos containers, isto é, a
chamada dos métodos add .
O setVisible(true) deve aparecer como última
instrução.
5
Interfaces gráficas - boas práticas - exemplo
//imports
import ...
public class BoasPraticas {
//declaração
private JPanel p;
private Jframe j;
public BoasPraticas () {
//instanciação
p = new JPanel();
...
//configuração de cada atributo
p.setBackground(Color.GREEN);
...
//adição aos containers
c.add(p);
....
j.setVisible(true);
}
public static void main(String args[]){
BoasPraticas tela = new BoasPraticas ( );
} }
Alguns componentes
Classes Básicas (Color, Font, etc...)
Color: atribui cor (frente ou fundo) ao componente, através da
composição primária de vermelho, verde e azul (padrão RGB). Use:
1 - o construtor Color(int red, int green, int blue);
2 - ou as Constantes (também em minúsculas):
BLACK BLUE CYAN
DARK_GRAY GRAY GREEN
LIGHT_GRAY MAGENTA ORANGE
PINK RED WHITE
YELLOW
Exemplo: Color c = new Color (255, 51, 0); //red
Font
Font: determina a fonte (letra) em que os rótulos serão
escritos.
Use o construtor
Font(String nome, int estilo, int tamanho).
Estilo: PLAIN, BOLD, ITALIC (use o + para juntar
estilos)
Exemplo: Font f = new Font(“arial”, Font.BOLD, 14);
Font f = new Font(“arial”, Font.BOLD + Font.ITALIC, 14);
Diálogos Pré-definidos
O Swing oferece um conjunto de
diálogos simples pré-definidos para uso
em interações breves com o usuário
mensagens de erro, de alerta
obtenção de uma confirmação
entrada de um único campo de texto
Classe JOptionPane
Estrutura básica:
ícone
mensagem
entrada de dados
botões de opção
6
MessageDialog
Exibe uma mensagem e aguarda OK do
usuário
INFORMATION
QUESTION
WARNING
ERROR
PLAIN
Exemplo de MessageDialog
JOptionPane.showMessageDialog(null,
"Vamos estudar pessoal !!!",
"Dica do Dia",
JOptionPane.WARNING_MESSAGE);
ConfirmDialog
Exibe uma mensagem e obtém uma confirmação
(YES/NO, OK/CANCEL)
Conjuntos de botões de opção (optionType):
JOptionPane.DEFAULT_OPTION
JOptionPane.YES_NO_OPTION
JOptionPane.YES_NO_CANCEL_OPTION
JOptionPane.OK_CANCEL_OPTION
Exemplo de ConfirmDialog
int resp = JOptionPane.showConfirmDialog(null,
"Vamos estudar?",
"Escolha uma opção",
JOptionPane.YES_NO_OPTION );
InputDialog
Exibe uma mensagem e obtém um valor de entrada do
usuário
String nome = JOptionPane.showInputDialog(null,
"Qual é o seu nome?",
"Identifique-se",
JOptionPane.QUESTION_MESSAGE);
OptionDialog
Exibe uma mensagem (ou objeto) e
obtém uma opção escolhida pelo
usuário
O número de botões e seus textos são
configuráveis
A opção default é configurável
7
Exemplo de OptionDialog
Object[] opcoes = {"Sim", "Não", "Mais Tarde",
"Amanhã", "Sei lá!"};
int resp1 = JOptionPane.showOptionDialog(null,
"Vamos Estudar?",
"Escolha uma opção",
JOptionPane.DEFAULT_OPTION,
JOptionPane.QUESTION_MESSAGE,
null,
opcoes,
opcoes[0]);
Painel de Conteúdo
import java.awt.Container;
import javax.swing.JFrame;
public class MeuPainelConteudo {
JFrame quadro;
Container c;
public MeuPainelConteudo(){
quadro = new JFrame();
quadro.setSize(200,200);
// Painel de conteúdo
c = quadro.getContentPane();
quadro.setVisible(true);
}
}
JLabel
Utilizado para colocar texto e Imagem
em uma Tela
JLabel
public class CriandoLabels {
private JLabel titulo1;
private JFrame quadro;
private Container c;
public CriandoLabels(){
quadro = new JFrame("Criando Labels");
quadro.setSize(300, 200);
// recebendo um Container
c = quadro.getContentPane();
c.setLayout(new FlowLayout());
c.setBackground(Color.YELLOW);
// Criando os Labels
titulo1 = new JLabel("Meu Primeiro Label");
c.add(titulo1);
quadro.setVisible(true);
}
public static void main (String args[]){
CriandoLabels rotulos = new CriandoLabels();}}
JLabel
// Criando os Labels configurando com o outro formato
titulo2 = new JLabel("Meu Label em Negrito");
titulo2.setFont(new Font ("Chiller", Font.BOLD ,20));
c.add(titulo2);
JLabel
titulo3 = new JLabel("Meu label vermelho");
titulo3.setOpaque(true);
titulo3.setBackground(Color.red);
titulo3.setToolTipText("Isso é um label com o background vermelho...");
c.add(titulo3);
8
JLabel
java.net.URL imgURL = CriandoLabels.class.getResource("duke-guitar.png");
ImageIcon imagem = new ImageIcon(imgURL, "Duke muito feliz");
titulo4 = new JLabel("SOu o DuKe",imagem, JLabel.CENTER);
c.add(titulo4);
JTextField
// Criando um JTextField
JTextField texto1 = new JTextField(10);
c.add(texto1);
// Criando um JTextField
JTextField texto2 = new JTextField("Sou o texto 2");
c.add(texto2);
// Criando um JTextField
JTextField texto3 = new JTextField("Sou o texto 2", 20);
c.add(texto3);
JTextArea
// Criando Area de Textos
JTextArea areaTexto = new JTextArea(5,20);
c.add(areaTexto);
JTextArea com JScrollPane
// Criando Area de Textos
JTextArea areaTexto = new JTextArea(5,20);
JScrollPane scrollPane = new JScrollPane(areaTexto);
scrollPane.setVerticalScrollBarPolicy(
JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
c.add(scrollPane);
JRadioButton
// Criando os Radio Button
JRadioButton botaoF = new JRadioButton("Feminino");
c.add(botaoF);
JRadioButton botaoM = new JRadioButton("Masculino");
c.add(botaoM);
// Agrupar os Botoes
ButtonGroup botoes = new ButtonGroup();
botoes.add(botaoF);
botoes.add(botaoM);
JPane
public class CriandoPane extends JFrame {
public CriandoPane(){
super("Criando Pane");
this.setSize(300, 300);
Container c = this.getContentPane();
c.setLayout(new FlowLayout());
JPanel painelAzul = new JPanel();
painelAzul.setPreferredSize(new Dimension(300,100));
painelAzul.setBackground(Color.BLUE );
c.add(painelAzul);
...
9
JPane
JPanel painelVermelho = new JPanel();
painelVermelho.setPreferredSize(new Dimension(300,100));
painelVermelho.setBackground(Color.RED );
// Criando uma Borda
Border borda = BorderFactory.createLineBorder(Color.YELLOW);
TitledBorder bordaComTitulo = BorderFactory.createTitledBorder(borda,"Meu Painel");
painelVermelho.setBorder(bordaComTitulo);
c.add(painelVermelho);
this.setVisible(true);
}
public static void main(String args[]){
CriandoPane programa = new CriandoPane();}}

Weitere ähnliche Inhalte

Was ist angesagt?

Introdução ao Java Swing (Interface)
Introdução ao Java Swing (Interface)Introdução ao Java Swing (Interface)
Introdução ao Java Swing (Interface)Sérgio Souza Costa
 
Java introdução ao eclipse
Java   introdução ao eclipseJava   introdução ao eclipse
Java introdução ao eclipseArmando Daniel
 
lista de exercícios de estrutura de dados Básico primeira prova
lista de exercícios de estrutura de dados Básico primeira prova lista de exercícios de estrutura de dados Básico primeira prova
lista de exercícios de estrutura de dados Básico primeira prova Rogério Cardoso
 
Java - Introdução a banco de dados
Java - Introdução a banco de dadosJava - Introdução a banco de dados
Java - Introdução a banco de dadosSérgio Souza Costa
 
Java orientação a objetos (associacao, composicao, agregacao)
Java   orientação a objetos (associacao, composicao, agregacao)Java   orientação a objetos (associacao, composicao, agregacao)
Java orientação a objetos (associacao, composicao, agregacao)Armando Daniel
 
Tratamento eventos
Tratamento eventosTratamento eventos
Tratamento eventoscla_venegas
 
Curso Básico de Java - Aula 2
Curso Básico de Java - Aula 2Curso Básico de Java - Aula 2
Curso Básico de Java - Aula 2PeslPinguim
 
Java interface gráfica swing
Java   interface gráfica swingJava   interface gráfica swing
Java interface gráfica swingArmando Daniel
 
Graphics Capabilities of Java Platform
Graphics Capabilities of Java PlatformGraphics Capabilities of Java Platform
Graphics Capabilities of Java PlatformMichel Alves
 
Módulo 9 - Introdução à Programação Orientada a Objectos
Módulo 9 - Introdução à Programação Orientada a Objectos Módulo 9 - Introdução à Programação Orientada a Objectos
Módulo 9 - Introdução à Programação Orientada a Objectos Luis Ferreira
 
Poo slides01
Poo slides01Poo slides01
Poo slides01jmtofoli
 
Java introdução ao java
Java   introdução ao javaJava   introdução ao java
Java introdução ao javaArmando Daniel
 

Was ist angesagt? (20)

Java gui
Java guiJava gui
Java gui
 
Introdução ao Java Swing (Interface)
Introdução ao Java Swing (Interface)Introdução ao Java Swing (Interface)
Introdução ao Java Swing (Interface)
 
Ficha teorica aula_input_reader
Ficha teorica aula_input_readerFicha teorica aula_input_reader
Ficha teorica aula_input_reader
 
Introdução ao JavaFX
Introdução ao JavaFXIntrodução ao JavaFX
Introdução ao JavaFX
 
Java Swing
Java SwingJava Swing
Java Swing
 
Java introdução ao eclipse
Java   introdução ao eclipseJava   introdução ao eclipse
Java introdução ao eclipse
 
lista de exercícios de estrutura de dados Básico primeira prova
lista de exercícios de estrutura de dados Básico primeira prova lista de exercícios de estrutura de dados Básico primeira prova
lista de exercícios de estrutura de dados Básico primeira prova
 
Java 17 Swing
Java 17 SwingJava 17 Swing
Java 17 Swing
 
Java - Introdução a banco de dados
Java - Introdução a banco de dadosJava - Introdução a banco de dados
Java - Introdução a banco de dados
 
Java orientação a objetos (associacao, composicao, agregacao)
Java   orientação a objetos (associacao, composicao, agregacao)Java   orientação a objetos (associacao, composicao, agregacao)
Java orientação a objetos (associacao, composicao, agregacao)
 
Tratamento eventos
Tratamento eventosTratamento eventos
Tratamento eventos
 
Java11
Java11Java11
Java11
 
Curso Básico de Java - Aula 2
Curso Básico de Java - Aula 2Curso Básico de Java - Aula 2
Curso Básico de Java - Aula 2
 
Java interface gráfica swing
Java   interface gráfica swingJava   interface gráfica swing
Java interface gráfica swing
 
Exercicios - Java Swing
Exercicios - Java SwingExercicios - Java Swing
Exercicios - Java Swing
 
Graphics Capabilities of Java Platform
Graphics Capabilities of Java PlatformGraphics Capabilities of Java Platform
Graphics Capabilities of Java Platform
 
Módulo 9 - Introdução à Programação Orientada a Objectos
Módulo 9 - Introdução à Programação Orientada a Objectos Módulo 9 - Introdução à Programação Orientada a Objectos
Módulo 9 - Introdução à Programação Orientada a Objectos
 
Poo slides01
Poo slides01Poo slides01
Poo slides01
 
Aula Java Swing
Aula Java SwingAula Java Swing
Aula Java Swing
 
Java introdução ao java
Java   introdução ao javaJava   introdução ao java
Java introdução ao java
 

Ähnlich wie Java Swing e componentes gráficos

Interface Gráfica.ppt
Interface Gráfica.pptInterface Gráfica.ppt
Interface Gráfica.pptJoberthSilva
 
Java: Introducao ao Swing
Java: Introducao ao SwingJava: Introducao ao Swing
Java: Introducao ao SwingArthur Emanuel
 
Aula 1 - Introdução à Interface gráfica do JAVA.pdf
Aula 1 - Introdução à Interface gráfica do JAVA.pdfAula 1 - Introdução à Interface gráfica do JAVA.pdf
Aula 1 - Introdução à Interface gráfica do JAVA.pdfanapatricio
 
Apostila:Curso de java II
Apostila:Curso de java II  Apostila:Curso de java II
Apostila:Curso de java II Verônica Veiga
 
Computação Móvel 2012.2 - Android
Computação Móvel 2012.2 - AndroidComputação Móvel 2012.2 - Android
Computação Móvel 2012.2 - AndroidTiago Bencardino
 
Java - Gestão de componentes curso profissional
Java - Gestão de componentes curso profissionalJava - Gestão de componentes curso profissional
Java - Gestão de componentes curso profissionala41172
 
Capitulo 14 -_componentes_gui_parte_1
Capitulo 14 -_componentes_gui_parte_1Capitulo 14 -_componentes_gui_parte_1
Capitulo 14 -_componentes_gui_parte_1Pedro Neto
 
Spring & Struts
Spring & StrutsSpring & Struts
Spring & Strutseduan
 
Introdução ao desenvolvimento de aplicativos com interface gráfica
Introdução ao desenvolvimento de aplicativos com interface gráficaIntrodução ao desenvolvimento de aplicativos com interface gráfica
Introdução ao desenvolvimento de aplicativos com interface gráficaArtur Barreto
 
Demoiselle Behave - Parte 3
Demoiselle Behave - Parte 3Demoiselle Behave - Parte 3
Demoiselle Behave - Parte 3Vanderson Silva
 
Construindo aplicações com netbeans
Construindo aplicações com netbeansConstruindo aplicações com netbeans
Construindo aplicações com netbeansSliedesharessbarbosa
 
Configuração do ambiente JEdit + Ant
Configuração do ambiente JEdit + AntConfiguração do ambiente JEdit + Ant
Configuração do ambiente JEdit + AntDenis L Presciliano
 
Configuração do ambiente JEdit + Ant
Configuração do ambiente JEdit + AntConfiguração do ambiente JEdit + Ant
Configuração do ambiente JEdit + AntDenis L Presciliano
 

Ähnlich wie Java Swing e componentes gráficos (20)

Interface Gráfica.ppt
Interface Gráfica.pptInterface Gráfica.ppt
Interface Gráfica.ppt
 
Java: Introducao ao Swing
Java: Introducao ao SwingJava: Introducao ao Swing
Java: Introducao ao Swing
 
Aula 1 - Introdução à Interface gráfica do JAVA.pdf
Aula 1 - Introdução à Interface gráfica do JAVA.pdfAula 1 - Introdução à Interface gráfica do JAVA.pdf
Aula 1 - Introdução à Interface gráfica do JAVA.pdf
 
Apostila:Curso de java II
Apostila:Curso de java II  Apostila:Curso de java II
Apostila:Curso de java II
 
Java1
Java1Java1
Java1
 
Computação Móvel 2012.2 - Android
Computação Móvel 2012.2 - AndroidComputação Móvel 2012.2 - Android
Computação Móvel 2012.2 - Android
 
Java - Gestão de componentes curso profissional
Java - Gestão de componentes curso profissionalJava - Gestão de componentes curso profissional
Java - Gestão de componentes curso profissional
 
Capitulo 14 -_componentes_gui_parte_1
Capitulo 14 -_componentes_gui_parte_1Capitulo 14 -_componentes_gui_parte_1
Capitulo 14 -_componentes_gui_parte_1
 
Java
JavaJava
Java
 
Java primeiros-passos
Java primeiros-passosJava primeiros-passos
Java primeiros-passos
 
Spring & Struts
Spring & StrutsSpring & Struts
Spring & Struts
 
Introdução ao desenvolvimento de aplicativos com interface gráfica
Introdução ao desenvolvimento de aplicativos com interface gráficaIntrodução ao desenvolvimento de aplicativos com interface gráfica
Introdução ao desenvolvimento de aplicativos com interface gráfica
 
Demoiselle Behave - Parte 3
Demoiselle Behave - Parte 3Demoiselle Behave - Parte 3
Demoiselle Behave - Parte 3
 
Visualg2_manual.pdf
Visualg2_manual.pdfVisualg2_manual.pdf
Visualg2_manual.pdf
 
1707331929 ltp iv java original
1707331929 ltp iv   java original1707331929 ltp iv   java original
1707331929 ltp iv java original
 
Construindo aplicações com netbeans
Construindo aplicações com netbeansConstruindo aplicações com netbeans
Construindo aplicações com netbeans
 
Apostila: Netbeans
Apostila: NetbeansApostila: Netbeans
Apostila: Netbeans
 
Configuração do ambiente JEdit + Ant
Configuração do ambiente JEdit + AntConfiguração do ambiente JEdit + Ant
Configuração do ambiente JEdit + Ant
 
Configuração do ambiente JEdit + Ant
Configuração do ambiente JEdit + AntConfiguração do ambiente JEdit + Ant
Configuração do ambiente JEdit + Ant
 
Java apostilha
Java apostilhaJava apostilha
Java apostilha
 

Java Swing e componentes gráficos

  • 1. 1 Swing Fernando Goulart Maristela Holanda Leila de Fátima Carvalho Java e Interfaces Gráficas Desktop WEB Móvel Dados Dados _____________ _____________ _____________ _____________ ____________ Outra Aplicação ou Legado ApresentaApresentaççãoão NegNegóóciocio Dados ouDados ou PersistênciaPersistência AWT x Swing Java fornece um suporte para construção de aplicações gráficas por meio de duas interfaces: AWT (Abstract Windowing Toolkit) . Inicialmente o único tipo de ferramentas, até a versão 1.1. Todas as classes estão no pacote java.awt. É bastante incompleta: faltam Table, TabbedPane, Slider etc. Dependente de plataforma (peer-model) e comportamento heterogêneo. Swing/JFC (Java Foundation Class) – surgiu na versão JDK1.2. Substituiu AWT, mas ainda compartilham partes fundamentais (como eventos). Atualmente as classes estão no pacote javax.swing. São “lightweight components”, independentes de plataforma. AWT x Swing/JFC Há compatibilidade entre os componentes AWT e Swing Há componentes Swing que herdam de componentes AWT. Exemplo: o componente JFrame, que fornece a janela principal da aplicação, é derivado da classe Frame. Os nomes dos componentes JFC/Swing sempre começam com “J”. Não mais utilizar os componentes AWT: usar os componentes correspondentes criados no Swing. São dois grandes exemplos de reuso: não é necessário reescrever código, mas apenas utilizar as funcionalidades implementadas nesses pacotes. Os 3 elementos AWT/Swing Componentes gráficos: são elementos que o usuário manipula com o mouse ou com o teclado. Gerenciadores de layout: governam a maneira pela qual os componentes aparecem na tela. Eventos: assinalam ações do usuário consideradas importantes, como o click do mouse em um botão. Java adota o tipo de programação dirigida por eventos: um evento ocorrido é tratado por event listener, uma categoria especial de classes. Componentes
  • 2. 2 Gerenciadores de layout Eventos JWindow Dialog Frame JLabel AbstractButton JPanel JRootPane JDialog JFrame JButton Window JComponent ContainerComponent Hierarquia JComponent – totalmente Swing/JFC 1 - Uma aparência (”pluggable look and feel ”) que pode ser especificada pelo programador ou (opcionalmente) selecionada pelo usuário em tempo de execução.
  • 3. 3 JComponent 2 - Diversos tipos de borda, que também definem os limites do componente. JComponent 3 - A habilidade para definir o tamanho máximo, mínimo e preferido de um componente, mesmo se a tela for redimensionada. 4 - ToolTip: faixa de texto que aparece quando o cursor passa sobre o componente. JFrame É o tipo mais especializado de janela Java. Possui uma barra de título e uma borda. JFrame é derivado do controle da AWT. Permite interações através de teclado e mouse. Incluir no código: import javax.swing.*; É um container: pode conter outros componentes. JFrame Possui 5 subcontainers. Por isso, é ligeiramente incompatível com java.awt.Frame, que não possui subcontainers. um gerenciador de layout é automaticamente associado a cada um de seus subcontainers. Os containers de JFrame Consulte: http://java.sun.com/products/jfc/tsc/articles/containers/index.html J J ContentPane Os containers de JFrame 11 -- JRootPaneJRootPane: container principal de JFrame, gerencia os demais subcontainers. Consulte: http://java.sun.com/docs/books/tutorial/uiswing/components/rootpane.html 22 -- JLayeredPaneJLayeredPane: adiciona profundidade a um container, permitindo sobreposição de componentes, quando necessário. Veja exemplos em: http://java.sun.com/docs/books/tutorial/uiswing/components/rootpane. html#layeredpane.
  • 4. 4 Os containers de JFrame 3 - MenuBar: encapsula os conceitos da plataforma para os limites da barra de menu. Para associar uma barra de menu à janela, chamar setMenuBar. O gerenciador de layout default é o BoxLayout. Consulte: http://java.sun.com/docs/books/tutorial/uiswing/components/menu.html 44 -- GlassPane: o painel de vidro, a vidraça. Permite interceptar ou impedir eventos de mouse, torna os componentes gráficos inacessíveis, embora visíveis. Consulte: http://java.sun.com/docs/books/tutorial/uiswing/components/rootpane.h tml#glasspane Os containers de JFrame 55 -- ContentPaneContentPane: é área de trabalho onde adicionamos diretamente nossos componentes. O gerenciador de layout default é o BorderLayoutBorderLayout. Para obter este componente, execute objJanela.getContentPane( ). Consulte: http://java.sun.com/docs/books/tutorial/uiswing/components/toplevel.html JFrame - exemplo import javax.swing.JFrame; public class MeuPrimeiroFrame extends JFrame{ public MeuPrimeiroFrame(){ super("Meu Primeiro JFrame"); this.setSize(200, 200); this.setVisible(true); } public static void main(String[] args) { MeuPrimeiroFrame frame = new MeuPrimeiroFrame(); } } JFrame import javax.swing.JFrame; public class MeuSegundoFrame { JFrame quadro; public MeuSegundoFrame(){ quadro = new JFrame("Meu Segundo Frame"); quadro.setSize(200,200); quadro.setVisible(true); } public static void main(String args[]){ MeuSegundoFrame janela = new MeuSegundoFrame(); } } Interfaces gráficas - boas práticas Os atributos de instância devem ter visibilidade private. Os métodos de instância devem ter visibilidade public. Por legibilidade, declare os atributos preferencialmente logo no início da classe. Também podem ser declarados ao final, após todos os métodos. Instancie os atributos dentro do construtor, ou nos métodos correspondentes chamados por ele. Interfaces gráficas - boas práticas Configure agrupadamente todas as características de um atributo. Para tratar o próximo atributo, salte uma linha e recomece o mesmo processo. Deixe para o final da classe a área de adicionar atributos aos containers, isto é, a chamada dos métodos add . O setVisible(true) deve aparecer como última instrução.
  • 5. 5 Interfaces gráficas - boas práticas - exemplo //imports import ... public class BoasPraticas { //declaração private JPanel p; private Jframe j; public BoasPraticas () { //instanciação p = new JPanel(); ... //configuração de cada atributo p.setBackground(Color.GREEN); ... //adição aos containers c.add(p); .... j.setVisible(true); } public static void main(String args[]){ BoasPraticas tela = new BoasPraticas ( ); } } Alguns componentes Classes Básicas (Color, Font, etc...) Color: atribui cor (frente ou fundo) ao componente, através da composição primária de vermelho, verde e azul (padrão RGB). Use: 1 - o construtor Color(int red, int green, int blue); 2 - ou as Constantes (também em minúsculas): BLACK BLUE CYAN DARK_GRAY GRAY GREEN LIGHT_GRAY MAGENTA ORANGE PINK RED WHITE YELLOW Exemplo: Color c = new Color (255, 51, 0); //red Font Font: determina a fonte (letra) em que os rótulos serão escritos. Use o construtor Font(String nome, int estilo, int tamanho). Estilo: PLAIN, BOLD, ITALIC (use o + para juntar estilos) Exemplo: Font f = new Font(“arial”, Font.BOLD, 14); Font f = new Font(“arial”, Font.BOLD + Font.ITALIC, 14); Diálogos Pré-definidos O Swing oferece um conjunto de diálogos simples pré-definidos para uso em interações breves com o usuário mensagens de erro, de alerta obtenção de uma confirmação entrada de um único campo de texto Classe JOptionPane Estrutura básica: ícone mensagem entrada de dados botões de opção
  • 6. 6 MessageDialog Exibe uma mensagem e aguarda OK do usuário INFORMATION QUESTION WARNING ERROR PLAIN Exemplo de MessageDialog JOptionPane.showMessageDialog(null, "Vamos estudar pessoal !!!", "Dica do Dia", JOptionPane.WARNING_MESSAGE); ConfirmDialog Exibe uma mensagem e obtém uma confirmação (YES/NO, OK/CANCEL) Conjuntos de botões de opção (optionType): JOptionPane.DEFAULT_OPTION JOptionPane.YES_NO_OPTION JOptionPane.YES_NO_CANCEL_OPTION JOptionPane.OK_CANCEL_OPTION Exemplo de ConfirmDialog int resp = JOptionPane.showConfirmDialog(null, "Vamos estudar?", "Escolha uma opção", JOptionPane.YES_NO_OPTION ); InputDialog Exibe uma mensagem e obtém um valor de entrada do usuário String nome = JOptionPane.showInputDialog(null, "Qual é o seu nome?", "Identifique-se", JOptionPane.QUESTION_MESSAGE); OptionDialog Exibe uma mensagem (ou objeto) e obtém uma opção escolhida pelo usuário O número de botões e seus textos são configuráveis A opção default é configurável
  • 7. 7 Exemplo de OptionDialog Object[] opcoes = {"Sim", "Não", "Mais Tarde", "Amanhã", "Sei lá!"}; int resp1 = JOptionPane.showOptionDialog(null, "Vamos Estudar?", "Escolha uma opção", JOptionPane.DEFAULT_OPTION, JOptionPane.QUESTION_MESSAGE, null, opcoes, opcoes[0]); Painel de Conteúdo import java.awt.Container; import javax.swing.JFrame; public class MeuPainelConteudo { JFrame quadro; Container c; public MeuPainelConteudo(){ quadro = new JFrame(); quadro.setSize(200,200); // Painel de conteúdo c = quadro.getContentPane(); quadro.setVisible(true); } } JLabel Utilizado para colocar texto e Imagem em uma Tela JLabel public class CriandoLabels { private JLabel titulo1; private JFrame quadro; private Container c; public CriandoLabels(){ quadro = new JFrame("Criando Labels"); quadro.setSize(300, 200); // recebendo um Container c = quadro.getContentPane(); c.setLayout(new FlowLayout()); c.setBackground(Color.YELLOW); // Criando os Labels titulo1 = new JLabel("Meu Primeiro Label"); c.add(titulo1); quadro.setVisible(true); } public static void main (String args[]){ CriandoLabels rotulos = new CriandoLabels();}} JLabel // Criando os Labels configurando com o outro formato titulo2 = new JLabel("Meu Label em Negrito"); titulo2.setFont(new Font ("Chiller", Font.BOLD ,20)); c.add(titulo2); JLabel titulo3 = new JLabel("Meu label vermelho"); titulo3.setOpaque(true); titulo3.setBackground(Color.red); titulo3.setToolTipText("Isso é um label com o background vermelho..."); c.add(titulo3);
  • 8. 8 JLabel java.net.URL imgURL = CriandoLabels.class.getResource("duke-guitar.png"); ImageIcon imagem = new ImageIcon(imgURL, "Duke muito feliz"); titulo4 = new JLabel("SOu o DuKe",imagem, JLabel.CENTER); c.add(titulo4); JTextField // Criando um JTextField JTextField texto1 = new JTextField(10); c.add(texto1); // Criando um JTextField JTextField texto2 = new JTextField("Sou o texto 2"); c.add(texto2); // Criando um JTextField JTextField texto3 = new JTextField("Sou o texto 2", 20); c.add(texto3); JTextArea // Criando Area de Textos JTextArea areaTexto = new JTextArea(5,20); c.add(areaTexto); JTextArea com JScrollPane // Criando Area de Textos JTextArea areaTexto = new JTextArea(5,20); JScrollPane scrollPane = new JScrollPane(areaTexto); scrollPane.setVerticalScrollBarPolicy( JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); c.add(scrollPane); JRadioButton // Criando os Radio Button JRadioButton botaoF = new JRadioButton("Feminino"); c.add(botaoF); JRadioButton botaoM = new JRadioButton("Masculino"); c.add(botaoM); // Agrupar os Botoes ButtonGroup botoes = new ButtonGroup(); botoes.add(botaoF); botoes.add(botaoM); JPane public class CriandoPane extends JFrame { public CriandoPane(){ super("Criando Pane"); this.setSize(300, 300); Container c = this.getContentPane(); c.setLayout(new FlowLayout()); JPanel painelAzul = new JPanel(); painelAzul.setPreferredSize(new Dimension(300,100)); painelAzul.setBackground(Color.BLUE ); c.add(painelAzul); ...
  • 9. 9 JPane JPanel painelVermelho = new JPanel(); painelVermelho.setPreferredSize(new Dimension(300,100)); painelVermelho.setBackground(Color.RED ); // Criando uma Borda Border borda = BorderFactory.createLineBorder(Color.YELLOW); TitledBorder bordaComTitulo = BorderFactory.createTitledBorder(borda,"Meu Painel"); painelVermelho.setBorder(bordaComTitulo); c.add(painelVermelho); this.setVisible(true); } public static void main(String args[]){ CriandoPane programa = new CriandoPane();}}