Geralmente quando se está começando a programar, o desenvolvedor começa a fazer códigos que são retornados no console em formato de texto, pois muitos são códigos de aprendizagem. Mas quando é necessário desenvolver sistemas que precisam de alguma interação mais aprimorada com o usuário, utiliza-se as interfaces gráficas, então a ideia começa a evoluir, para ajudar nesse tipo de desenvolvimento usamos a interface GUI.

Os exemplos aqui apresentados foram feitos na IDE Eclipse, qualquer dúvida em questão de instalação e configuração entre no link: Clique Aqui

Interface GUI

Conhecida como Interface Gráfica com Usuário (Graphical User Interface – GUI), é onde os resultados são apresentados em modo gráfico.

Essa interface é formada através de componentes GUI, conhecidos por controles ou widgets. Esses componentes são objetos que fazem a interação com usuário por teclado, mouse ou outros dispositivos que venham a servir para entrada de dados.

Componentes

Os componentes GUI Swing estão dentro do pacote javax.swing que são utilizados para construir as interfaces gráficas. Alguns componentes não são do tipo GUI Swing e sim componentes AWT. Antes de existir o GUI Swing, o Java tinha componentes AWT (Abstract Windows Toolkit) que faz parte do pacote javax.awt.

A diferença entre o GUI Swing e AWT, é na aparência e comportamento dos componentes, ou seja, quando criado por AWT, a aparência e comportamento de seus componentes são diferentes para cada plataforma e enquanto feito por GUI Swing, a aparência e comportamento funcionam da mesma forma para todas as plataformas. Os componentes AWT são mais pesados, pois requerem uma interação direta com o sistema de janela local, podendo restringir na aparência e funcionalidade, ficando menos flexíveis do que os componentes GUI Swing.

Abaixo são mostrados alguns dos componentes mais usados:

  • JLabel - Exibe texto não editável ou ícones.
  • JTextField – Insere dados do teclado e serve também para exibição do texto editável ou não editável.
  • JButton – Libera um evento quando o usuário clicar nele com o mouse.
  • JCheckBox – Especifica uma opção que pode ser ou não selecionada.
  • JComboBox – Fornece uma lista de itens onde possibilita o usuário selecionar um item ou digitar para procurar.
  • JList – Lista de itens onde pode ser selecionado vários itens.
  • JPanel – É a área onde abriga e organiza os componentes inseridos.

Superclasses de componentes

Os componentes possuem classes que definem quais serão seus estados e comportamentos. Veja como é a hierarquia dessas classes na Figura 1.

Hierarquia das classes que contém os componentes GUI

Figura 1: Hierarquia das classes que contém os componentes GUI

Classe Container

Faz parte do pacote java.awt sendo uma subclasse de Component anexados aos Containers. Os Containers são janelas que podem ser usados para organizar e exibir outros componentes na tela, pelo Container ser um Component, podemos colocar Containers dentro de outros Containers para facilitar a organização.

Mais informações sobre a classe Container acesse o link: Clique Aqui.

Classe JComponent

Está dentro do pacote javax.swing sendo uma subclasse de Container, mas é a superclasse que declara os atributos e comportamentos para todos os componentes Swing. Por ser a subclasse de Container, todos os componentes Swing acabam sendo Containers.

Alguns recursos comuns do JComponent incluem aparência e comportamento plugáveis, teclas de atalho, dicas de ferramenta, suporte para tecnologias de apoio a deficientes e suporte para localização de interface com o usuário, ou seja, é essa classe que abriga os componentes principais que são usados nas janelas.

Vamos fazer um exemplo de entrada e saída para uma interface GUI.

JOptionPane

Encontra-se no pacote javax.swing, e por ser um componente faz parte da Classe JComponent, permitindo ao usuário inserir informações nas caixas de diálogos, podendo exibir informações ou avisos.

Vamos realizar algumas saídas gráficas fazendo interações com o usuário conforme os exemplos mostrados abaixo.

Listagem 1: Leitura do nome e sobrenome

import javax.swing.JOptionPane;

public class SaidaNomeJOptionPane {

	public static void main(String[] args) {
		
		String nome = JOptionPane.showInputDialog("Digite o nome: ");
		String sobreNome = JOptionPane.showInputDialog("Digite o sobrenome: ");
		
		String nomeCompleto = nome + " " + sobreNome;
	
		JOptionPane.showMessageDialog(null, "Nome Completo: "+nomeCompleto,"Informação",JOptionPane.INFORMATION_MESSAGE);

	}
}

Observe que os valores digitados na caixa de diálogo que aparece são automaticamente resultados das variáveis “nome” e “sobreNome” que estão armazenando dados conforme foi inserido através do método showInputDialog.

A linha que invoca o método showMessageDialog, imprime os resultados armazenados na variável “nomeCompleto”. Abaixo a lista de argumentos desse método.

  • Argumento que marca a posição que será exibida da caixa na tela, como não estamos trabalhando com frames o padrão é null.
  • Argumento que insere na barra de título o que foi digitado no caso, “Informação” .
  • O último argumento é o tipo da saída da mensagem que exibe através do diálogo por meio de constante. Existe várias constantes, consulte a Figura 2.

Listagem 2: Trabalhando com valores inteiros

import javax.swing.JOptionPane;

public class SaidaValoresInteiros {

	public static void main(String[] args) throws NumberFormatException {
		
		int valorA = Integer.parseInt(JOptionPane.showInputDialog("Informe o valor A: "));
		int valorB = Integer.parseInt(JOptionPane.showInputDialog("Informe o valor B: "));
		
		int resultado = valorA * valorB;
		
		JOptionPane.showMessageDialog(null,"Resultado final: "+resultado,"Resultado",JOptionPane.INFORMATION_MESSAGE);

	}
}

No exemplo da Listagem 2 é necessário fazer uma conversão das Strings para tipo de dados int, que são inseridas nas variáveis “valorA” e “valorB”, pois seus tipos são inteiros e caso seja inserido outro tipo, irá gerar um erro.

Listagem 3: Programa que gera a média

import javax.swing.JOptionPane;

public class Media_ler {
    public static void main(String[] args) {
        float nota1, nota2, calculaMedia;
        
        nota1 = Float.parseFloat(JOptionPane.showInputDialog ("Digite a primeira nota"));
        nota2 = Float.parseFloat (JOptionPane.showInputDialog("Digite a segunda nota"));
        calculaMedia = (nota1 + nota2) / 2;
		
        JOptionPane.showMessageDialog(null, "Resultado da Média = "+ calculaMedia,"Resultado", JOptionPane.WARNING_MESSAGE);
    }
}

Informação Diálogo de Mensagem

Abaixo mostramos as constantes que representam os tipos das mensagens quando são mostradas na saída de um resultado através JOptionPane.

Constantes para diálogo de mensagens

Figura 2: Constantes para diálogo de mensagens

Então ficamos por aqui com mais este artigo, cujo objetivo foi apresentar de forma introdutória a Interfade Gráfica de Usuário em aplicações Java. Espero que tenha gostado um abraço e até a próxima!