[Grupo de estudos – Java] Diferença entre AWT e Swing

Conforme dito no post anterior, apresento aqui o mesmo código porém com a interface em Swing.

Existem algumas diferenças fundamentais que pude perceber ao usar as duas interfaces. Mas antes vou falar da principal diferença entre ambas. O pacote AWT monta a janela [interface] buscando recursos do sistema, tais como fonte padrão, estilo de botão padrão, etc. Por outro lado o Swing monta a janela usando recursos da Máquina Virtual, quer dizer que ele vai ter uma aparência semelhante em qualquer sistema operacional que o programa seja executado.

Então segue o código para estudo:

/**
 * @(#)Botao2.java
 *
 *
 * @author Luciano Santos
 * @version 1.00 2010/4/8
 */

import java.awt.*; //importando todas as classes do pacote AWT e Swing para a classe Janela
import javax.swing.*;
import java.awt.event.*;//importando as classes do pacote de eventos do AWT, para que o botao funcione

public class Botao2 extends JFrame {
	//declarando componentes
	JLabel lblDigite,lblResultado;
	JTextField txtNome;
	JButton btnOk;

	public Botao2(){
		setTitle("Botão de Ação");//definindo o titulo da janela

		setSize (800,80);//definindo tamanho e layout da janela
		setLayout(new FlowLayout()); //falaremos mais tarde sobre layouts

		setLocationRelativeTo(null);//centralizando a janela

		//definindo operação padrão para o botão fechar
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//sem esta linha a janela não fecha pelo botão fechar.

		lblDigite = new JLabel("Digite seu nome ao lado e clique em Ok.");//configurando o label
		add (lblDigite);//adicionando o label configurado a janela

		txtNome = new JTextField(15);//configurando o campo de texto pro tamanho 25
		add(txtNome);//adicionando o campo de texto configurado a janela

		btnOk = new JButton("OK");//configurando o botao ok
		add(btnOk);//adicionando o botao configurado a janela

		lblResultado = new JLabel("");//Configurando o label para começar vazio
		add(lblResultado);//adicionando o label configurado

		//pondo o botao OK em espera
		btnOk.addActionListener(new Ok());
	}

	//atribuindo uma funcionalidade ao botao OK
	public class Ok implements ActionListener
	{
		public void actionPerformed(ActionEvent ev)
		{
			lblResultado.setText("Parabéns "+ txtNome.getText()+"!");
		}
	}

    public static void main(String[] args) {
    	/*instanciando o método construtor
    	 *mais tarde falaremos sobre instâncias do Java
    	 */

    	Botao2 ok2 = new Botao2();//nesta linha o código carrega o construtor para memória, montando a tela NA MEMÓRIA
    	 		ok2.setVisible(true);//definindo a visibilidade da tela
	}

}

Hoje quero explicar mais sobre o código em geral, contudo vou continuar a falar sobre as diferenças dos códigos.

AWT

Swing

Os resultados acima mostram o código rodando no Ubuntu 10.4 e já deixam claro a diferença entre AWT e SWING. Mas tem um detalhe importante. Na linha 39 dos 2 códigos nós temos a configuração do rótulo [label] que exibe o resultado do clique.
No pacote AWT é preciso deixar espaços em branco pra cada letra que pode ser usada, enquanto que o Swing ajusta o valor do rótulo de acordo com o que é digitado.

Agora vamos abordar outro assunto: O Action Listener.

O Action listener é uma interface de espera que recebe eventos de ações. Uma classe que deseje processar um evento de ação deve implementar esta interface, os componentes do objeto criado deve ficar em espera através do método addActionListener. Quando o evento de ação ocorre [um clique no botão, por exemplo] o método actionPerformed do componente é invocado.

Para usar o Action Listener temos 3 etapas. A primeira é o import do pacote event. Feito na linha 11 do código.

Depois é preciso por os componentes [no exemplo o botão “Ok”] em espera. Isso foi feito na linha 43 do código.

Por fim devemos determinar o que ocorre quando o evento é acionado. Basicamente existem duas formas de se fazer isso, porém por achar mais simples o uso de uma classe interna optei por apresentar somente desta forma. Das linhas 47 a 53 a classe Ok é criada para determinar a funcionalidade do botão. Assim podemos deixar separado do código o que são os componentes de interface e o que são as funcionalidades.

Este tema é um tanto complexo e deve gerar algumas dúvidas, mas é só perguntar e exploramos mais o assunto.

2 Respostas para “[Grupo de estudos – Java] Diferença entre AWT e Swing

  1. Cara sensacional a tua explicação, não poderia deixar os meus sinceros agradecimentos.

    muito bom, o mundo sem duvida precisa disso!

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s