Links interessantes de sites com dicas para melhorar e explorar ainda mais a programação Desktop:
- Java em Geral: http://www.exampledepot.com/egs/index.html
- JTable: http://www.exampledepot.com/egs/javax.swing.table/pkg.html
- Java2S: http://java2s.com/Code/Java/CatalogJava.htm
- Java2S Swing: http://java2s.com/Code/Java/Swing-Components/CatalogSwing-Components.htm
Outros links bastante interessantes:
- http://www.web4j.com/ {because java is simple}
- http://www.javapractices.com
- http://www.javapractices.com/topic/TopicAction.do?Id=170 {Complete Swing App}
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());
}
}