de erro: telefone.emptyMensagem Default: Telefone e obrigatorio-------------------------------------------------3) Adicionando o tema :Podemos utilizar os pacotes que o Java ja tem para dar uma interface mais elegante ao nosso programa :I) Para isso , vamos criar uma classe Tema:Figura 04 - Nova Classe p/ utilizar um Temaessa classe fica assim :package springlesson07.utils;import com.sun.java.swing.plaf.gtk.GTKLookAndFeel;import com.sun.java.swing.plaf.motif.MotifLookAndFeel;import com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel;import com.sun.java.swing.plaf.windows.WindowsLookAndFeel;import java.awt.Component;import javax.swing.SwingUtilities;import javax.swing.UIManager;import javax.swing.UnsupportedLookAndFeelException;import javax.swing.plaf.metal.MetalLookAndFeel;public class Tema { int tema; public Tema() { } public int getTema() { return tema; } public void setTema(int tema) { this.tema = tema; }// public final void setTheme(int numTema, JRootPane rootPane) { // se fosse com MDI public final void setTheme(int numTema, Component rootPane) { setTema(numTema); try { System.out.println("Antigo: " + UIManager.getLookAndFeel()); switch (numTema) { case 1: UIManager.setLookAndFeel(new NimbusLookAndFeel()); break; case 2: UIManager.setLookAndFeel(new MotifLookAndFeel()); break; case 3: UIManager.setLookAndFeel(new WindowsLookAndFeel()); break; case 4: UIManager.setLookAndFeel(new MetalLookAndFeel()); break; case 5: UIManager.setLookAndFeel(new GTKLookAndFeel()); break; default: break; } System.out.println("Novo: " + UIManager.getLookAndFeel()); // // Update the ComponentUIs for all Components. This // // needs to be invoked for all windows. SwingUtilities.updateComponentTreeUI(rootPane); } catch (UnsupportedLookAndFeelException ulfe) { // ulfe.printStackTrace(); System.out.println("nao suportado"); } catch (java.lang.NoClassDefFoundError ncdf) { // ncdf.printStackTrace(); System.out.println("nao disponivel"); } }}Se estivessemos usando uma aplicacao MDI com a classe jDesktop, ao aplicar o tema no pai as filhas ja herdam, mas como nao estamos fazendo assim : precisamos chamar o tema em cada janela :no package viewII) no arquivo frameListaContatos vamos criar uma funcao setTema e chama-la no contrutor: public final class frameListaContatos extends javax.swing.JFrame { private ApplicationContext ctx = new ClassPathXmlApplicationContext("beans-definitions.xml"); private ContatoDAO dao = (ContatoDAO) ctx.getBean("contatoDao"); private ContatoTableModel tableModel = new ContatoTableModel(dao.listar()); private Contato contatoAtivo; private frameEditaContato janelaEdicao; /** * Creates new form frameListaContatos */ public frameListaContatos() { initComponents(); carregaTabela(); setJanelaEdicao(new frameEditaContato(this, getDao())); setTema(1); } public void setTema(int tema) { Tema T = new Tema(); T.setTheme(tema, rootPane); }}III) no arquivo frameEditaContato vamos criar uma funcao setTema e chama-la no contrutor:public final class frameEditaContato extends javax.swing.JFrame { private frameListaContatos flC; private ContatoDAO dao; private Contato contato; //novo construtor public frameEditaContato(frameListaContatos flC, ContatoDAO daoInformed) { initComponents(); this.flC = flC; this.dao = daoInformed; this.contato = new Contato(); // que ja possui um id=0 setTema(); } public final void setTema() { Tema T = new Tema(); T.setTheme(1, SwingUtilities.getRootPane(this)); }}Observe que as classes ganharam o modificador final4) Teste o programa e veja se aplicou o tema nas duas janelasFigura 05 - Tema implementado5) Implementando Exportacao arquivos XML.I) Vamos adicionar 2 botoes a nossa Lista de Contatos springlesson07.view.contato.frameListaContatos.javaFigura 06 - Adicionando os botoes p/ importar/exportar XMLImagens :importar exportar O spring fornece uma interface p/ trabalhar com o Xstream org.springframework.oxm.xstream.XStreamMarshaller que me levou ao XStream, mas veremos esse pacote numa licao mais a frente (web)Figura 07 - Documentacao do SpringII ) baixe o Xstream, e apos baixar o Binary distribution: , crie uma pasta components dentro do seu projeto e coloque ali os arquivos : xstream-1.4.3.jar e sua dependencia : xmlpull-1.1.3.1.jarFigura 08 - Obtendo o XStreamIII) e adicione as libs no projeto : Figura 09 - Adicionando a lib XStream ao projetoVeja que simples fica (1o vamos implementar a solucao, depois vamos organizar o codigo para facilitar a explicacao)Exportar XML : Solucao