domingo, 5 de outubro de 2008

Criando uma interface gráfica simples


Hoje resolvi escrever um pouco sobre criação de interfaces gráficas em Java usando Swing.

Vamos fazer algo simples, apenas para mostrar alguns conceitos interessantes de Java e Swing.


import javax.swing.*;
import java.awt.event.*;

public class MinhaInterface extends JFrame implements ActionListener {

   public MinhaInterface() {
      JButton b = new JButton("Clique aqui!");
      b.addActionListener(this);
      JPanel p = new JPanel();
      p.add(b);
      add(p);

      setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      pack();
      setLocationRelativeTo(null);
      setVisible(true);
   }

   public void actionPerformed(ActionEvent e) {
      JOptionPane.showMessageDialog(this, "Alô Mundo!");
   }

   public static void main(String[] args) {
      new MinhaInterface();
   }

}

A classe acima cria uma janela com um botão "Clique aqui!". Se você clicar no botão, vai aparecer uma caixa de diálogo com o texto "Alô Mundo!"



Então vamos ao código.

A linha 4 define a classe 'MinhaInterface', que neste caso estende a classe JFrame (Herança), e implementa a interface ActionListener. JFrame e ActionListener fazem parte dos pacotes javax.swing e java.awt.event, por isso são usados os imports das linhas 1 e 2.



Desta forma, a classe 'MinhaInterface' é ao mesmo tempo do tipo JFrame e do tipo ActionListener. Isso se chama Polimorfismo.

A linha 6 define o construtor da classe 'MinhaInterface'. Este construtor será chamado na linha 24, quando a classe 'MinhaInterface' for instanciada (é criado um objeto desta classe).

No construtor são definidas as operações que devem ser realizadas quando um objeto é criado. Neste caso as primeiras operações definem a criação de um botão (linha 7) e de um painel (linha 9).

A linha 7 cria um novo botão com o texto "Clique aqui!". Na linha 8 é adicionado um listener no botão, que serve para detectar quando o botão é acionado (através de um clique do mouse por exemplo). Como foi implementada a interface ActionListener na nossa própria classe, então esta classe também é um tipo de listener. Por isso podemos passar a própria classe 'MinhaInterface' como parâmetro para o método addActionListener(), usando a palavra reservada this.
Na linha 9 é criado um painel e na linha 10 o botão é adicionado neste painel. Na linha 11 o painel é adicionado na janela.
Nas linhas 13 a 16 a janela é configurada. O método setDefaultCloseOperation() define a operação a ser realizada ao fechar a janela, que neste caso é sair do programa. O método pack() define o tamanho da janela automaticamente, a partir do conteúdo da janela. O método setLocationRelativeTo(null) centraliza a janela na tela. E o método setVisible(true) torna a janela visível.
O método actionPerformed da linha 19 é obrigatório pois a classe 'MinhaInterface' está implementando um ActionListener. O método actionPerformed é chamado quando o botão é acionado. Dentro do método actionPerformed nós devemos colocar as operações que devem ser realizadas pelo botão. Neste caso quando o botão é acionado é exibida a mensagem "Alô mundo!" (linha 20).
E finalmente, nas linhas 23 a 25, é executado o método main(), que é por onde o programa começa. Na linha 24 é criado um objeto da classe MinhaInterface, executando o construtor que vimos acima.

terça-feira, 26 de agosto de 2008

Trabalhando com datas em Java

AVISO 29/11/2014 - Com o Java 8 foram feitas várias melhorias na API de datas do Java. Pretendo mostrar exemplos destas melhorias em outra postagem. O conteúdo abaixo serve para as versões anteriores ao Java 8.

Vejam este link para informações sobre a nova API:
http://blog.caelum.com.br/conheca-a-nova-api-de-datas-do-java-8/



Você já teve que trabalhar com datas em Java e ficou confuso? Eu também.

Por isso vou falar aqui sobre algumas classes Java que são usadas para trabalhar com datas: Date, Calendar e SimpleDateFormat.


Classe java.util.Date:

Esta classe causa muita confusão. Apesar do nome dela ser Date, hoje em dia quase tudo nela está obsoleto. Na verdade esta classe tem a função de armazenar um inteiro longo que representa uma data com precisão de milisegundos.


Classe java.util.Calendar:

Com a classe Calendar podemos obter data e hora do sistema. A classe Calendar representa um calendário onde você pode obter várias informações sobre a data como dia do mês, dia da semana, dia do ano, mês, ano, hora, minuto, etc.

Além disso, com esta classe é possível definir um fuso horário, o que é importante para determinar a data correta.

Exemplo de uso da classe Calendar:
Calendar cal = Calendar.getInstance();
System.out.println(cal.get(Calendar.DAY_OF_MONTH));
System.out.println(cal.get(Calendar.MONTH));
System.out.println(cal.get(Calendar.YEAR));
//Saída:
//dia = 26
//mes = 7 (agosto)
//ano = 2008

Note que a contagem dos meses começa do zero, por isso agosto é representado com o número 7.

Além disso, Calendar.getInstance(); sempre retorna a data e hora atual do sistema. Se for necessário alterar a data então deve ser usado o método setTime().


Classe java.text.SimpleDateFormat:

Muitas vezes precisamos obter a data a partir de uma string em algum formato do tipo dia/mês/ano. É para isso que existe a classe SimpleDateFormat. Com esta classe podemos definir um pattern do tipo dd/MM/yyyy, que representa o formato da data que queremos utilizar.

O código abaixo mostra um exemplo:

SimpleDateFormat date1 = new SimpleDateFormat("dd/MM/yyyy");
SimpleDateFormat date2 = new SimpleDateFormat("ddMMyyyy");
SimpleDateFormat date3 = new SimpleDateFormat("yyyy-MM-dd");

Date d1 = date1.parse("26/08/2008");
Date d2 = date2.parse("26082008");
Date d3 = date3.parse("2008-08-26");

System.out.println("data 1 = "+date1.format(d1));
System.out.println("data 2 = "+date2.format(d2));
System.out.println("data 3 = "+date3.format(d3));

//Saída:
//data 1 = 26/08/2008
//data 2 = 26082008
//data 3 = 2008-08-26

Existem vários patterns possíveis. Note que o M do exemplo acima tem que ser maíusculo pois ele representa o mês, m minúsculo representa minutos. Veja a documentação da classe para maiores informações.

O exemplo abaixo mostra como obter as informações de data a partir de uma string, usando as 3 classes mencionadas acima:
SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
String dataStr = "01/01/2008";
Date date = dateFormat.parse(dataStr);
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);

System.out.println("dia = " + calendar.get(Calendar.DAY_OF_MONTH));
System.out.println("mes = " + calendar.get(Calendar.MONTH));
System.out.println("ano = " + calendar.get(Calendar.YEAR));

//Saída:
//dia = 1
//mes = 0 (janeiro)
//ano = 2008


Neste post foram apresentados exemplos práticos de como trabalhar com datas em Java. Espero ter ajudado e até a próxima.


Informações mais detalhadas sobre datas podem ser encontradas aqui (em inglês):
http://www.odi.ch/prog/design/datetime.php

segunda-feira, 25 de agosto de 2008

Java é linguagem de programação mais popular, segundo estudo

Por Redação Computerworld
Publicada em 11 de agosto de 2008 às 09h16
http://idgnow.uol.com.br/computacao_corporativa/2008/08/11/java-e-linguagem-de-programacao-mais-popular-segundo-estudo/


São Paulo - De acordo com pesquisa da Tiobe, o Java mantém boa margem sobre a segunda colocada, a C. Cobol caiu 3 posições no último ano.

Java continua tendo a preferência dos desenvolvedores, segundo a pesquisa Tiobe Programming Community, que indica a popularidade das linguagens de programação. Apesar de ter apresentado ligeira queda nos últimos doze meses, o Java mantém boa liderança sobre a segunda colocada C. A pesquisa está disponível na íntegra, em inglês.

O (Visual)Basic está em terceiro lugar, seguido da C++, PHP e Python. Todas estas linguagens permaneceram na mesma posição em que estavam há um ano.

As maiores subidas de ranking foram dadas pela Pascal, que saltou da posição 24 para a 16, e da PowerShell, que não constava na lista em agosto de 2007 e agora ocupa a 15ª posição. Destaque negativo para a linguagem COBOL, que despencou três posições para a 19ª colocação.

O ranking feito pela Tiobe, empresa especializada em análise de qualidade de software, é baseado em pesquisas feitas nos principais buscadores de internet (clique aqui e entenda como funciona a pesquisa — em inglês). A lista é atualizada mensalmente.

segunda-feira, 18 de agosto de 2008

Minha primeira postagem!

Olá! Esta é minha primeira postagem no blog.

Neste blog pretendo publicar dicas e novidades sobre a linguagem de programação Java.

Sintam-se à vontade para enviar seus comentários.