[Grupo de Estudos – Java] Primeira classe Java com interface gráfica

Olá pessoal, aqui está nossa primeira interface gráfica, tentei fazer a janela mais simples possível.

Sugiro que o código seja analisado, e que as duvidas sejam postadas para esclarecimento.

/**
 * @(#)Janela.java
 *
 *
 * @author Luciano Santos
 * @version 1.00 2010/4/8
 */
 //importando todas as classes do pacote AWT e Swing para a classe Janela
import java.awt.*;
import javax.swing.*;

/** abrindo a classe com extenção para JFrame [permitindo a criação de interface gráfica]
 * A classe deve ser declarada para que a Máquina Virtual "enxergue" a classe e interprete-a
*/
public class Janela extends JFrame {
	//declarando os componentes da janela
	Label lblFrase;

	/* abrindo o método construtor da classe
	 * Esse trecho do código [ou da clase] será o resposável pela CONSTRUÇÃO da interface gráfica na memória,
	 * por isso tem esse nome.
	 * o construtor deve ser público e ter o mesmo nome da classe,
	 * lembrando que java é case sensitive, então o nome do construtor deve ser identico ao da classe.
	 */

    public Janela() {
    	//definindo o título da janela
    	super("Primeira Janela");

		//definindo tamanho e layout da janela

		setSize (600,400);
		setLayout(new FlowLayout()); //falaremos mais tarde sobre layouts

		//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.

		//configurando um label
		lblFrase = new Label("Minha primeira janela com texto");
		//adicionando o label configurado a janela
		add (lblFrase);

    }
    /* Abrindo o método principal da classe [Main em inglês significa principal]
     * Este método deve ser público, estático e vazio, ou seja, sempre vai ter a mesma estrutura;
     * Na sua criação é definida uma String, que receberá possiveis argumentos passados pelo usuário.
     * o nome da string costuma ser args [por abreviação de argumentos]
     * mas pode ser outro nome qualquer, como a, argumentos, parametros, param, etc
     *
     * mais tarde podemos trabalhar com classes usando argumentos para String
     */

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

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

}

Aguardo respostas/duvidas/comentários

Anúncios

2 Respostas para “[Grupo de Estudos – Java] Primeira classe Java com interface gráfica

  1. Tenho as seguintes dúvidas:
    sempre que for criar uma janela com interface grafica vou ter que colocar extends JFrame?
    Vou ter que usar sempre as informações do código, o que muda e o que é igual em todas janelas??

    • Olá Neusa, vou realçar em negrito tudo o que for obrigatório no código para construir uma janela, mas há algumas ressalvas. Contudo quero responder a sua pergunta primeiro:

      1. sempre que for criar uma janela com interface grafica ou ter que colocar extends JFrame?
      Sim.

      import java.awt.*;
      import javax.swing.*;
      public class Janela extends JFrame {

      Label lblFrase;

      public Janela() {
      super(“
      Primeira Janela“);
      setSize (
      600,400);
      setLayout(
      new FlowLayout());
      setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

      lblFrase = new Label(“Minha primeira janela com texto”);
      add (lblFrase);

      }
      public static void main(String[] args) {
      Janela instancia = new Janela();
      instancia.setVisible(true);
      }
      }

      Apesar do básico imutável estar em negrito tem algumas coisas que devem ficar claras:

      1. o parâmetro super() pode ser substituido por setTitle()

      2. é necesário definir um layout, mas não necessariamente o Flowlayout [veremos isso mais pra frente]

      3. o nome da classe vai mudar em cada arquivo, mas o nome do construtor deve ser igual ao nome da classe. [destaquei o nome da classe em italico e azul pra reconhecimento]

      4. o componente escolhido para este exemplo foi o Label, que pertence ao pacote AWT [por isso o import]. Existem basicamente dois pacotes de componentes visuais: o Swing e o AWT. cada um deles apresenta caracteristicas diferentes. Enquanto o AWT tenta usar as fontes do sistema [seja windows, linux, mac] o Swing tenta apresentar o programa de forma padrão independente do sistema.

      5. Há outra forma de se fazer este mesmo código, mas é mais confusa e desorganizada por isso não irei mostrar.
      Os destaques em vermelho no código mostram:
      I) a declaração do componente,
      II) depois o instanciar do componente [criação na memória]
      III) e em seguida a adição na tela.
      Quer dizer, da forma apresentada sempre teremos 3 linhas [no mínimo] para cada componente. Quero chamar a atenção para o fato de que a declaração de componente ( Label lblFrase;) é feita fora do construtor, isso vai se mostrar útil quando trabalharmos com códigos grandes.

      6. para instanciar a classe devemos sempre usar o seguinte esquema:
      Nome_Da_Classe Nome_da_Instancia = new Construtor_da_Classe()
      ex: Janela instancia = new Janela();

      7. a visibilidade deve ser aplicada a instancia criada para que os componentes sejam exibidos na tela.
      ex: instancia.setVisible(true);

      ps. nome da instancia é o objeto gerado pela classe, ou seja, pode ser qualquer coisa, qualquer palavra a escolha do programador.

      Acho que essa explicação pode ter gerado mais algumas dúvidas, se for caso é só postar!

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 )

w

Conectando a %s