terça-feira, 31 de agosto de 2010

Aula 4 - 31.08.2010

Hoje, iremos finalizar a criação do nosso primeiro sistema com inteface gráfica utilizando a API javax.swing.*.

Links interessantes de sites com dicas para melhorar e explorar ainda mais a programação Desktop:

Outros links bastante interessantes:


Sobre persistência de objetovs, o ideal, atualmente, é se trabalhar com um Banco de Dados Relacional (MySQL, Postgresql, Oracle, SQL Server, etc). Porém, este assunto será visto em um momento futuro.

Por ora, para operacionalizar a nossa aplicação, faremos uso da tecnologia XML para persistir nossos objetos da memória RAM para o DISK. Abaixo segue a classe-base necessária para permitir realizar esta ação de forma transparente:

package ipa.es.utils;

import java.io.*;
import java.beans.XMLEncoder;
import java.beans.XMLDecoder;

/** Classe que representa o mecanismo de persistência através de XML. */
public class XMLUtils {

/** Atributo que mantém o nome do diretório dos arquivos .xml. */
private static String dir = "c:/";

/** Método que seta o diretório onde serão salvos os .xml
 * @param String Contendo o nome do diretório. */
public static void setDiretorio(String d) {
 dir = d;
}

/** Método que retorna o diretório onde serão salvos os .xml
 * @return String Retorna o nome diretório. */
public static String getDiretorio() {
 return dir;
}

/** Método que salva o objeto em um arquivo XML.
 * @param objeto Contendo o objeto.
 * @param arq Contendo o nome do arquivo .xml. */
public static void salvar(Object objeto, String arq) throws Exception {
 XMLEncoder xml = null;
 try {
  File f = new File(getDiretorio() + arq);
  xml = new XMLEncoder(
      new BufferedOutputStream(
      new FileOutputStream(f)));
  xml.writeObject(objeto);
  xml.flush();
 } finally {
  if (xml != null) {
   xml.close();
  }
 }
}

/** Método que retorna um objeto a partir de um arquivo XML.
 * @param arq Contendo o nome do arquivo .xml.
 * @return Object Contendo o objeto no XML. */
public static Object buscar(String arq) throws Exception {
 Object objeto = null;
 XMLDecoder xml = null;
 try {
  File f = new File(getDiretorio() + arq);
  if (!f.exists())
   return null;
  xml = new XMLDecoder(
      new BufferedInputStream(
      new FileInputStream(f)));
  objeto = xml.readObject();
 } finally {
  if (xml != null) {
   xml.close();
  }
 }
 return objeto;
}

/** Método para testes. */
public static void main(String args[]) throws Exception {
 String s = "IPA";
 XMLUtils.salvar(s, "Teste.xml");
 System.out.println("Lendo arquivo: " + XMLUtils.buscar("Teste.xml").toString());
}
}

Aula 3 - 24.08.2010

Na aula 3, foi dado continuidade à construção da interface gráfica básica utilizando a API javax.swing.*

Nesta ocasião, além dos componentes padrões da API foi apresentado o recurso de Look And Feel. Abaixo, seguem alguns links interessantes sobre o assunto: 
Link oficial:

sexta-feira, 13 de agosto de 2010

Aula 2 - 17.08.2010

Pessoal,

Conforme combinado, no dia 17/Agosto não estarei em Porto Alegre e a aula será realizada sem a minha presença, porém, haverá um exercício a ser entregue na próxima aula, dia 24.

A não entrega do exercício implicará automaticamente em ausência no dia 17.

O objetivo não é entregar algo funcionando e sim demonstrar que realizou as tentativas para descobrir como é que funciona a API javax.swing do Java.

Itens a serem trabalhados:
  1. Criar um projeto no NetBeans para construção de uma interface gráfica padrão.
  2. Itens da interface gráfica:
  • Tela de Login, utilizando JFrame;
  • Tela de Menu Principal, utilizando JFrame;
  • Tela de cadastro de usuário, utilizando JDialog.
A ideia é fazer com que ao ser executado, o programa abra automaticamente a tela de Login e ao clicar no botão "Login", o sistema feche esta tela de login e abra a tela de Menu Principal. Esta tela, por sua vez, terá um JMenuBar com pelo menos uma opção: Cadastro de Usuários. Ao clicar nesta opção, a tela de cadastro de usuários deve ser apresentada em formato Modal=TRUE.

Campos necessários na tela de cadastro de usuários:
  • Login: JTextField e JLabel
  • Senha: JPasswordTextField
  • Adm: JComboBox [com as opções "Sim" e "Não"]
  • Sexo: JRadioButton [com as opções "Masculino" e "Feminino"]
  • Funcionário: JCheckbox [com as opções "Sim" e "Não"]
  • Lista: JTable [com as colunas "Login" e "Adm"]
  • Botões "Novo", "Salvar" e "Excluir": JButton
Bom, se quiserem utilizar outros objetos da API javax.swing, sintam-se à vontade.

O objetivo é apresentar uma tela para que possamos na sequencia criar um software de cadastro de usuários e que faça login no sistema.

Boa sorte!!!

terça-feira, 3 de agosto de 2010