Académique Documents
Professionnel Documents
Culture Documents
1
Component
Container
A classe javax.swing.JFrame
2
Veja abaixo um exemplo da utilização do container JFrame.
import java.awt.*;
import javax.swing.*;
class TesteJFrame extends JFrame{
public TesteJFrame(){
//Titulo da janela
1 setTitle("Primeira Janela Swing");
//tamanho da janela
2 setSize(275,100);
// anula o layout padrao
3 getContentPane().setLayout(null);
//cor de fundo da janela no padrão RGB (Red Green Blue)
4 getContentPane().setBackground(new Color(255,255,255));
//provoca o termino da execução (encerra o programa)
5 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String [] args){
6 TesteJFrame janela = new TesteJFrame();
7 janela.setVisible(true);
}
}
3
Veja a janela gerada pela execução do programa anterior.
import java.awt.*;
import javax.swing.*;
class TesteJFrame extends JFrame{
public TesteJFrame(){
//Titulo da janela
setTitle("Primeira Janela Swing");
//tamanho da janela
setSize(275,100);
// anula o layout padrao
getContentPane().setLayout(null);
//cor de fundo da janela no padrão RGB (Red Green Blue)
getContentPane().setBackground(new Color(255,255,255));
//provoca o termino da execução (encerra o programa)
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
centralizar();
}
public void centralizar(){
//obtém a altura e largura da resolução vídeo
Dimension screen =
Toolkit.getDefaultToolkit().getScreenSize();
//obtém a altura e largura da minha janela
Dimension janela = getSize();
setLocation((screen.width - janela.width)/2,
(screen.height - janela.height)/2);
}
public static void main(String [] args){
TesteJFrame janela = new TesteJFrame();
janela.setVisible(true);
}
}
4
Inserindo Textos, Campos de Edição e Botões na
Tela
A Classe javax.swing.JLabel
import java.awt.*;
import javax.swing.*;
class TesteJLabel extends JFrame{
public TesteJLabel(){
//Titulo da janela
setTitle("Primeira Janela Swing");
//tamanho da janela
setSize(275,100);
//anula o layout padrao
getContentPane().setLayout(null);
//cor de fundo da janela no padrão RGB (Red Green Blue)
getContentPane().setBackground(new Color(255,255,255));
//Cria um JLabel
JLabel jl= criarJLabel();
//insere o JLabel no ContentPane da Janela
getContentPane().add(jl);
//provoca o termino da execução (encerra o programa)
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
centralizar();
}
public JLabel criarJLabel(){
JLabel jl = new JLabel();
jl.setText("JLabel inserido");
jl.setLocation(10, 10);
jl.setSize(370, 50);
//Torna opaco o fundo do rótulo
jl.setOpaque(true);
jl.setBackground(new Color(255,255,255));
jl.setForeground(new Color(0,0,0));
jl.setFont(new Font("Courier new", Font.BOLD, 12));
jl.setToolTipText("JLabel Exemplo");
jl.setHorizontalAlignment(SwingConstants.LEFT);
jl.setVerticalAlignment(SwingConstants.TOP);
return jl;
}
public void centralizar(){
//obtém a altura e largura da resolução vídeo
Dimension screen =
Toolkit.getDefaultToolkit().getScreenSize();
//obtém a altura e largura da minha janela
Dimension janela = getSize();
5
if (janela.height > screen.height)
setSize(janela.width, screen.height);
if (janela.width > screen.width)
setSize(screen.width, janela.height);
setLocation((screen.width - janela.width)/2,
(screen.height - janela.height)/2);
}
public static void main(String [] args){
TesteJLabel janela = new TesteJLabel();
janela.setVisible(true);
}
}
A Classe javax.swing.JButton
import java.awt.*;
import javax.swing.*;
class TesteJButton extends JFrame{
public TesteJButton(){
//Titulo da janela
setTitle("Primeira Janela Swing");
//tamanho da janela
setSize(new Dimension(300,100));
//anula o layout padrao
getContentPane().setLayout(null);
//cor de fundo da janela no padrao RGB (Red Green Blue)
getContentPane().setBackground(new Color(255,255,255));
JButton b1, b2;
//Cria um JButton "gravar"
b1 = new JButton();
b1.setText("Gravar");
//50 posição x, 30 posição y, 100 largura, 30 altura
b1.setBounds(50, 30, 100, 30);
b1.setBackground(new Color(0,0,170));
b1.setForeground(Color.YELLOW);
b1.setFont(new Font("Helvetica", Font.BOLD, 12));
b1.setToolTipText("Botao b1");
b1.setHorizontalAlignment(SwingConstants.CENTER);
b1.setVerticalAlignment(SwingConstants.CENTER);
b1.setEnabled(false);
6
b1.setMnemonic('G');
b2 = new JButton();
b2.setText("Sair");
b2.setBounds(150, 30, 100, 30);
b2.setBackground(new Color(0,0,170));
b2.setForeground(Color.YELLOW);
b2.setFont(new Font("Helvetica", Font.BOLD, 12));
b2.setToolTipText("Botao b2");
b2.setHorizontalAlignment(SwingConstants.CENTER);
b2.setVerticalAlignment(SwingConstants.CENTER);
b2.setEnabled(true);
b2.setMnemonic('S');
setLocation((screen.width - janela.width)/2,
(screen.height - janela.height)/2);
}
public static void main(String [] args){
TesteJButton janela = new TesteJButton();
janela.setVisible(true);
}
}
7
setText(): define o texto do botão
setBounds(): define o tamanho e a posição em seu
contêiner
setBackground(): define a cor de fundo
setForeground(): define a cor do texto
setFont(): define o tipo, o estilo e o tamanho da
fonte
setToolTipText(): define uma dica
setHorizontalAlignment(): define o alinhamento
horizontal do conteúdo.
setVerticalAlignment(): define o alinhamento vertical
do conteúdo.
A Classe javax.swing.JTextField
import java.awt.*;
import javax.swing.*;
class TesteJTextField extends JFrame{
public TesteJTextField(){
//Titulo da janela
setTitle("Primeira Janela Swing");
//tamanho da janela
setSize(new Dimension(300,100));
//cor de fundo da janela no padrão RGB (Red Green Blue)
getContentPane().setBackground(new Color(200,230,200));
//Cria JTextField
JTextField jt = new JTextField();
jt.setText("Insira texto aqui");
jt.setHorizontalAlignment(JTextField.CENTER);
8
//insere o JTextField no ContentPane da Janela
getContentPane().add(jt);
//provoca o termino da execução (encerra o programa)
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
centralizar();
}
public void centralizar(){
//obtém a altura e largura da resolução vídeo
Dimension screen =
Toolkit.getDefaultToolkit().getScreenSize();
//obtém a altura e largura da minha janela
Dimension janela = getSize();
setLocation((screen.width - janela.width)/2,
(screen.height - janela.height)/2);
}
public static void main(String [] args){
TesteJTextField janela = new TesteJTextField();
janela.setVisible(true);
}
}
Layouts de Tela
Gerenciamento de Layout
9
Em função do exposto acima, é aconselhável evitar o
uso de valores absolutos para o dimensionamento e
posicionamento de componentes. Para isso, deve-se
substituir esse procedimento pelo uso dos gerenciadores de
leiaute (layout) disponíveis na API Java.
10
Veja o exemplo abaixo.
import java.awt.*;
import javax.swing.*;
class TesteFlowLayout extends JFrame{
public TesteFlowLayout(){
//Titulo da janela
setTitle("Teste FlowLayout");
//Define um tamanho inicial para a janela
setSize(300,120);
//cor de fundo da janela no padrão RGB (Red Green Blue)
getContentPane().setBackground(new Color(255,255,255));
//provoca o termino da execução (encerra o programa)
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
centralizar();
//Cria um flowlayout alinhando seus componentes ah esquerda
//e definindo o espaçamento horizontal e vertical entre eles
FlowLayout fl = new FlowLayout(FlowLayout.LEFT, 10, 10);
getContentPane().setLayout(fl);
getContentPane().add(b1);
getContentPane().add(b2);
getContentPane().add(b3);
getContentPane().add(b4);
getContentPane().add(b5);
}
public void centralizar(){
//obtém a altura e largura da resolução vídeo
Dimension screen =
Toolkit.getDefaultToolkit().getScreenSize();
//obtém a altura e largura da minha janela
Dimension janela = getSize();
setLocation((screen.width - janela.width)/2,
(screen.height - janela.height)/2);
}
public static void main(String [] args){
TesteFlowLayout janela = new TesteFlowLayout();
janela.setVisible(true);
}
}
11
Neste exemplo foi criado um objeto da classe
FlowLayout com um de seus construtores que modifica o
alinhamento padrão dos componentes (centralizado) para que
sejam alinhados à esquerda e definiu-se também o
espaçamento horizontal e vertical entre estes componentes.
12
Veja abaixo um exemplo.
import java.awt.*;
import javax.swing.*;
class TesteBorderLayout extends JFrame{
public TesteBorderLayout(){
//Titulo da janela
setTitle("Teste BorderLayout");
//Define um tamanho inicial para a janela
setSize(350,150);
//cor de fundo da janela no padrão RGB (Red Green Blue)
getContentPane().setBackground(new Color(255,255,255));
//provoca o termino da execução (encerra o programa)
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
centralizar();
//Cria um borderlayout definindo o espaçamento horizontal e
//vertical entre cada uma das regiões
BorderLayout bl = new BorderLayout(5,5);
getContentPane().setLayout(bl);
getContentPane().add(b1,BorderLayout.NORTH);
getContentPane().add(b2,BorderLayout.SOUTH);
getContentPane().add(b3,BorderLayout.EAST);
getContentPane().add(b4,BorderLayout.WEST);
getContentPane().add(b5,BorderLayout.CENTER);
}
public void centralizar(){
//obtém a altura e largura da resolução vídeo
Dimension screen =
Toolkit.getDefaultToolkit().getScreenSize();
//obtém a altura e largura da minha janela
Dimension janela = getSize();
setLocation((screen.width - janela.width)/2,
(screen.height - janela.height)/2);
}
public static void main(String [] args){
TesteBorderLayout janela = new TesteBorderLayout();
janela.setVisible(true);
}
}
13
Um objeto da classe BorderLayout foi criado
utilizando-se uma versão alternativa do construtor, de modo
a ser possível definir um espaçamento horizontal e vertical
entre cada uma de suas regiões. Na linha seguinte esse
objeto é configurado como gerenciador de leiaute (layout)
do painel de conteúdo da janela.
14
Veja abaixo um exemplo.
import java.awt.*;
import javax.swing.*;
class TesteGridLayout extends JFrame{
public TesteGridLayout(){
//Titulo da janela
setTitle("Teste GridLayout");
//Define um tamanho inicial para a janela
setSize(300,150);
//cor de fundo da janela no padrão RGB (Red Green Blue)
getContentPane().setBackground(new Color(255,255,255));
//provoca o termino da execução (encerra o programa)
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
centralizar();
getContentPane().setLayout(gl);
getContentPane().add(b1);
getContentPane().add(b2);
getContentPane().add(b3);
getContentPane().add(b4);
getContentPane().add(b5);
getContentPane().add(b6);
}
public void centralizar(){
//obtém a altura e largura da resolução vídeo
Dimension screen =
Toolkit.getDefaultToolkit().getScreenSize();
//obtém a altura e largura da minha janela
Dimension janela = getSize();
setLocation((screen.width - janela.width)/2,
(screen.height - janela.height)/2);
}
public static void main(String [] args){
TesteGridLayout janela = new TesteGridLayout();
janela.setVisible(true);
}
}
15
No exemplo acima foi instanciado um novo objeto da
classe GridLayout, chamado "gl", utilizando-se uma versão
do construtor que exige quatro números inteiros como
argumentos. Eles representam, respectivamente: o número de
linhas, o número de colunas, o espaçamento horizontal e o
espaçamento vertical entre os componentes (em pixels).
16
Veja o exemplo abaixo.
import java.awt.*;
import javax.swing.*;
class TesteJPanel extends JFrame{
JButton b1, b2;
JPanel p1, p2;
public TesteJPanel(){
//Titulo da janela
setTitle("Teste JPanel");
//tamanho da janela
setSize(200,200);
// anula o layout padrao
getContentPane().setLayout(null);
//cor de fundo da janela no padrão RGB (Red Green Blue)
getContentPane().setBackground(new Color(255,255,255));
//provoca o termino da execução (encerra o programa)
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
centralizar();
p1 = new JPanel();
p1.setLayout(null);
p1.setBounds(10, 10, 170, 70);
p1.setBackground(Color.BLUE);
p2 = new JPanel();
p2.setLayout(null);
p2.setBounds(10,90,170,70);
p2.setBackground(Color.YELLOW);
b1 = new JButton("Gravar");
b1.setBounds(35, 30, 100, 30);
b2 = new JButton("Sair");
b2.setBounds(35, 30, 100, 30);
p1.add(b1);
p2.add(b2);
getContentPane().add(p1);
getContentPane().add(p2);
}
public void centralizar(){
//obtém a altura e largura da resolução vídeo
Dimension screen =
Toolkit.getDefaultToolkit().getScreenSize();
//obtém a altura e largura da minha janela
Dimension janela = getSize();
setLocation((screen.width - janela.width)/2,
(screen.height - janela.height)/2);
}
public static void main(String [] args){
TesteJPanel janela = new TesteJPanel();
janela.setVisible(true);
}
}
17
O objetivo deste exemplo é criar dois painéis e
adiciona-los ao painel de conteúdo da janela e, em seguida,
adicionar um botão em cada um dos painéis criados.
Interface
18
ambas implementando a interface País, cada uma deverá
obrigatoriamente codificar a forma como a constituição será
criada. (Existe uma opção para não codificar utilizando a
palavra abstract que não será abordada no curso).
interface InterfaceName
{
método(args);
}
import javax.swing.JOptionPane;
public class Celcius implements Temperatura {
public void converterTemperatura(double temperatura, String origem)
{
double tempCelcius=0;
if( origem.equals("Fahrenheit")){
tempCelcius = (temperatura - 32) / 1.8;
}
else if (origem.equals("Kelvin")){
tempCelcius = temperatura - 273.15;
}
JOptionPane.showMessageDialog(null,"Temperatura em Celcius:
" + tempCelcius);
}
}
19
import javax.swing.JOptionPane;
public class Fahrenheit implements Temperatura {
public void converterTemperatura(double temperatura, String origem){
double tempFahrenheit =0;
if( origem.equals("Celcius")){
tempFahrenheit = temperatura * 1.8 + 32;
}
else if (origem.equals("Kelvin")){
tempFahrenheit = temperatura * 1.8 - 459.67;
}
JOptionPane.showMessageDialog(null, "Temperatura em
Fahrenheit: " + tempFahrenheit);
}
}
import javax.swing.JOptionPane;
public class TestaConversao {
public static void main(String[] args) {
String temperatura = JOptionPane.showInputDialog("Digite o
valor da temperatura (origem)");
String origem = JOptionPane.showInputDialog("Digite a
unidade da temperatura");
String destino = JOptionPane.showInputDialog("Informe a
unidade da temperatura destino");
if(destino.equals("Celcius")){
Celcius c = new Celcius();
double temp = Double.parseDouble(temperatura);
c.converterTemperatura(temp, origem);
}
else if(destino.equals("Fahrenheit")){
20
Fahrenheit f = new Fahrenheit();
double temp = Double.parseDouble(temperatura);
f.converterTemperatura(temp, origem);
}
}
}
De Para Fórmula
Celsius Kelvin K = °C + 273,15
Fahrenheit Kelvin K = (°F + 459.67) / 1.8
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
class TesteEventoAcao extends JFrame implements ActionListener{
JLabel l1;
JButton b1, b2;
int i1, i2;
public TesteEventoAcao(){
setTitle("Teste Evento Acao");
//tamanho da janela
setSize(240,100);
// anula o layout padrao
getContentPane().setLayout(null);
//cor de fundo da janela no padrão RGB (Red Green Blue)
getContentPane().setBackground(new Color(255,255,255));
21
//provoca o termino da execução (encerra o programa)
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
centralizar();
i1 = i2 = 0;
b1 = new JButton("Gravar");
b1.setBounds(10, 10, 100, 30);
b1.addActionListener(this);
b2 = new JButton("Sair");
b2.setBounds(120, 10, 100, 30);
b2.addActionListener(this);
l1 = new JLabel("Pressione os botões");
l1.setBounds(5, 50, 220, 20);
getContentPane().add(b1);
getContentPane().add(b2);
getContentPane().add(l1);
}
public void centralizar(){
//obtém a altura e largura da resolução vídeo
Dimension screen =
Toolkit.getDefaultToolkit().getScreenSize();
//obtém a altura e largura da minha janela
Dimension janela = getSize();
setLocation((screen.width - janela.width)/2,
(screen.height - janela.height)/2);
}
public void actionPerformed(ActionEvent e){
if (e.getSource() == b1)
l1.setText("Botão gravar pressionado " + ++i1 + " vez(es)");
if (e.getSource() == b2)
l1.setText("Botão sair pressionado " + ++i2 + " vez(es)");
}
public static void main(String [] args){
TesteEventoAcao janela = new TesteEventoAcao();
janela.setVisible(true);
}
}
22
Quando o usuário clicar no botão "Cancelar" o
programa deve ser encerrado (Utilize o comando
System.exit(0) para isto).
Quando o usuário clicar no botão "Ok" valide o
usuário e senha e caso sejam informações corretas,
utilize um JOptionPane para informar ao usuário que
ele foi logado ao sistema e em seguida encerre o
programa (Utilize o comando System.exit(0) para
isto).
Caso as informações não estejam corretas, utilize
um JoptionPane para informar ao usuário que as
informações de login não estão corretas, e diga
para o usuário digitar as informações novamente.
23