Como selecionar uma dado de um combobox e inserir numa Jtable

26 respostas
J

Olá!

Estou com uma grande dificuldade para criar um collection que recebe vários autores.

Vamos ao contexto:
Estou desenvolvendo um sistema desktop. Tenho uma classe Obra e outra classe autor,
vendo o relacionamento entre elas temos que obra tem muitos autores e autor tem muitas obras, portanto, temos aí um relacionamento M:N (muitos pra muitos)

Com os annotations do Hibernate posso criar o seguinte, para relacionar/mapear esse relacionamento:
Na classe Obra:

@ManyToMany(fetch = FetchType.LAZY) @JoinTable(name = "ObraAutor", joinColumns = {@JoinColumn(name = "CodObra")}, inverseJoinColumns = {@JoinColumn(name = "CodAutor")}) private Collection<Autor> autor = new ArrayList<Autor>();

Na classe Autor:

//O FetchType.LAZY significa que o conteúdo da super classe será trazido apenas na primeira solicitação. @ManyToMany(fetch= FetchType.LAZY) @JoinTable(name="ObraAutor", joinColumns={@JoinColumn(name="CodAutor")}, inverseJoinColumns={@JoinColumn(name="CodObra")}) private Collection <Obra> obra = new ArrayList<Obra>();

Lembrando que existe no projeto classes ObraAutor e ObraAutorPK que fazem parte do relacionamento.

Na tela de cadastro de obra criei um evento do tipo gainFocus no combobox e inseri o seguinte metodo:

private void AddAutor(JTable jTable) { cmbautor.addItemListener(new ItemListener() { @Override public void itemStateChanged(ItemEvent e) { JComboBox comboAutor = (JComboBox) e.getSource(); String valor = (String) comboAutor.getSelectedItem(); String[] campos = new String[]{valor}; TmAutores = (DefaultTableModel) TableAutor.getModel(); TmAutores.addRow(campos); for (int i = 0; i < campos.length; i++) { Session session = HibernateUtil.getSessionFactory().openSession(); autores = session.createQuery("FROM Autor").list(); TableAutor.setValueAt(autores.get(i).getCodAutor(), i, 0); TableAutor.setValueAt(valor, i, 1); session.close(); } } }); }

Alguém sabe me dar uma ideia de como faço pra cadastrar os autores selecionados?

O anexo mostra a simples tela de cadastro.

26 Respostas

D

Bom, eu prefiro trabalhar com List e ArrayList, acho mais simples.
No caso, só iria adicionar cada autor selecionado à lista e o resto o próprio hibernate se vira, quando o objeto de Obra chegar para a persistência, ele identifica, de acordo com o mapeamento, como proceder.

A tua dificuldade está em inserir os autores na collection, certo? Eu optaria por list…

J

Mas da forma como tô fazendo, como seria? tem alguma ideia?

Faz tempo que tô tentando mais não consegui fazer nada! :cry:

N

Oi, Jackye!

Seu problema consiste em recuperar os autores cadastrados.
Dica: [color=red]NÃO USE O DEFAULTTABLEMODEL[/color].

Por quê? Você tem muito trabalho ao ter que depender de Linha/Coluna para recuperar os dados, você tem cast pra cá, cast pra lá, não trabalha diretamente com os objetos do negócio além de inúmeras dificuldades de manutenção.

Aprenda a criar o seu próprio modelo para sua JTable.
Com isso, você vai conseguir recuperar uma coleção de Autores (no caso), pronta para ser adicionada no banco de dados!!

Acesse o link da minha assinatura para maiores detalhes sobre como criar um modelo próprio para sua tabela e seja feliz!

Fica com Deus! :smiley:

J

Então, poderia me sugestionar um código simples de como eu preencheria essa tabela [color=red]sem usar o DefaultTableModel?[/color]

J
Olha só, criei uma classe onde fiz minha tableModel:
public class TabelaAutor extends AbstractTableModel {  
      
        private List<Autor> autores;  
        private static final String[] col = {"CodAutor","NoAutor"};  
      
       public TabelaAutor(List<Autor> autores){  
            this.autores = autores; 
//efetua a mudança na tabela. 
            fireTableStructureChanged();  
        }  
      
        @Override  
        public int getRowCount() {  
            return autores.size();  
        }  
      
        @Override  
        public int getColumnCount() {  
            return col.length;  
        }  
      
        @Override  
        public Object getValueAt(int rowIndex, int columnIndex) {  
            Autor autor = autores.get(rowIndex);
            Object dado = null;
            switch (columnIndex){
                case 0:
                    dado = autor.getCodAutor();
                break;
                case 1:
                    dado = autor.getNome();
                break; 
                case 2:
            }
            return dado;  
        }
Agora, como mudo no metodo a seguir para receber minha tablemodel?
private void AddAutor() {
        cmbautor.addItemListener(new ItemListener() {
            
            @Override
            public void itemStateChanged(ItemEvent e) {
                JComboBox comboAutor = (JComboBox) e.getSource();
                String valor = (String) comboAutor.getSelectedItem();
                String[] campos = new String[]{valor};
//Como eu modifico AQUI para que minha tablemodel receba os dados do combobox.
                TmAutores = (DefaultTableModel) TableAutor.getModel();
                TmAutores.addRow(campos);
                for (int j = 0; j < campos.length; j++) {
                    Session session = HibernateUtil.getSessionFactory().openSession();
                    autores = session.createQuery("FROM Autor").list();
                    TableAutor.setValueAt(autores.get(j).getCodAutor(), j, 0);
                    TableAutor.setValueAt(valor, j, 1);
                    session.close();
                }
            }
        });
    }

Lembrando que é um combobox que lista todos os autores do banco de dados, quando eu clicar no autor escolhido,
a tabela seja preenchida com todos os dados do autor.

Até. :D

N
Bom, no construtor da sua classe, você irá definir o seu modelo E associá-lo à tabela.
public class FormularioDaJackye extends JFrame {

    private TabelaAutor tablemodelAutor;
    public FormularioDaJackye() {

        Session session = HibernateUtil.getSessionFactory().openSession();  
        autores = session.createQuery("FROM Autor").list();

        // Crio o tablemodel...
        tablemodelAutor = new TabelaAutor(autores);
        // e associo este à tabela!
        tabelaDaJackye.setModel(tablemodelAutor);
    }
}

Essa é a carga inicial da sua tabela.
Agora, você faz assim: dentro do tablemodel, você cria métodos para inserir, editar, remover registros da sua tabela... Assim, você chama o inserir quando quiser adicionar algum registro nela, e assim sucessivamente.

Espero ter ajudado, abraços!

J

Oi! :D

Realmente, usar o TableModel é bem melhor! :thumbup:

Refiz minha tableModel deixei-a assim:
import Dominio.Autor;
import java.util.ArrayList;
import java.util.List;
import javax.swing.table.AbstractTableModel;

public class TabelaAutor extends AbstractTableModel {

    private List<Autor> linhas;

    private String[] colunas = new String[]{"Código", "Nome"};

    /** Cria um uma tabela vazia. */
    public TabelaAutor() {
        linhas = new ArrayList<Autor>();
    }

    /** Cria um tabela carregada com 
     * a lista de autores especificada.
     * @param listaDeAutores 
     */
    public TabelaAutor(List<Autor> listaDeAutores) {
        linhas = new ArrayList<Autor>(listaDeAutores);
    }

    /** Retorna a quantidade de colunas. */
    @Override
    public int getColumnCount() {
        return colunas.length;
    }

    /** Retorna a quantidade de linhas. */
    @Override
    public int getRowCount() {
        // Retorna o tamanho da lista de autores.
        return linhas.size();
    }

    /** Retorna o nome da coluna no índice especificado.
     * Este método é usado pela JTable para saber o texto do cabeçalho. */
    @Override
    public String getColumnName(int columnIndex) {
        return colunas[columnIndex];
    }

    /** Retorna a classe dos elementos da coluna especificada.
     * Este método é usado pela JTable na hora de definir o editor da célula. */
    @Override
    public Class getColumnClass(int columnIndex) {
        switch (columnIndex) {
            case 0:
                return Integer.class;
            case 1:
                return String.class;
        }
        return Object.class;
    }

    /** Retorna o valor da célula especificada
     * pelos índices da linha e da coluna. */
    @Override
    public Object getValueAt(int rowIndex, int columnIndex) {
        // Pega o autor da linha especificada.
        Autor autor = linhas.get(rowIndex);
        Object dado = null;
        switch (columnIndex) {
            case 0:
                return autor.getCodAutor();
            case 1:
                return autor.getNome();
        }
        return dado;
    }

    /** Define o valor que deve ser preenchido na tabela
     * pelos índices da linha da coluna.
     * @param value 
     */
    @Override
    public void setValueAt(Object value, int rowIndex, int columnIndex) {
        //Define o autor especificado para ser inserido na linha.
        Autor autor = linhas.get(rowIndex);
        switch (columnIndex) {
            case 0:
                autor.setCodAutor((Integer) value);
                break;
            case 1:
                autor.setNome((String) value);
                break;
        }
        fireTableCellUpdated(rowIndex, columnIndex);
    }

    @Override
    public boolean isCellEditable(int rowIndex, int columnIndex) {
        return false;
    }

    /** Retorna o autor da linha especificada.
     * @param indiceLinha
     * @return  
     */
    public Autor getAutor(int indiceLinha) {
        return linhas.get(indiceLinha);
    }

    /* Adiciona um registro. */
    public void addAutor(Autor autor) {
        // Adiciona o registro.
        linhas.add(autor);
        int ultimoIndice = getRowCount() - 1;
        // Reporta a mudança. O JTable recebe a notificação
        // e se redesenha permitindo que visualizemos a atualização.
        fireTableRowsInserted(ultimoIndice, ultimoIndice);
    }

    public void addRow(Object[] row) {
        // Aqui voce acrescenta uma linha com um conjunto de registros específico  
        fireTableDataChanged();
    }

    /** Remove todos os registros. */
    public void RemoverTodos() {
        // Remove todos os elementos da lista de sócios.
        linhas.clear();
        fireTableDataChanged();
    }

    /** Remove a linha especificada.
     * @param indiceLinha 
     */
    public void removeAutor(int indiceLinha) {
        // Remove o autor da linha especificada.    	
        linhas.remove(indiceLinha);
        fireTableRowsDeleted(indiceLinha, indiceLinha);
    }

    /** Verifica se este tabela está vazia.
     * @return 
     */
    public boolean isEmpty() {
        return linhas.isEmpty();
    }
}
Conforme a dica, fiz o seguinte, coloquei o metodo no combobox com evento gainFocus (Não sei se é bom fazer assim):
cmbautor.addItemListener(new ItemListener() {

            List<Autor> autores;

            @Override
            public void itemStateChanged(ItemEvent e) {
                JComboBox comboUsuario = (JComboBox) e.getSource();
                Object[] row = new String[]{};
                tabelaAutor = new TabelaAutor(autores);
                tblAutor.setModel(tabelaAutor);
                tabelaAutor.addRow(row);
                for (int j = 0; j < autores.size(); j++) {
                    tabelaAutor.setValueAt(e, j, 0);
                    tabelaAutor.setValueAt(e, j, 1);
                }

            }
        });
Executei e tá dando um erro de nullexception. :( [color=red]Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException at java.util.ArrayList.(ArrayList.java:131) at Visao.TabelaAutor.(TabelaAutor.java:33) at Visao.CadastroObra2$8.itemStateChanged(CadastroObra2.java:276) at javax.swing.JComboBox.fireItemStateChanged(JComboBox.java:1205) at javax.swing.JComboBox.selectedItemChanged(JComboBox.java:1262) at javax.swing.JComboBox.contentsChanged(JComboBox.java:1309) at javax.swing.AbstractListModel.fireContentsChanged(AbstractListModel.java:100) at javax.swing.DefaultComboBoxModel.setSelectedItem(DefaultComboBoxModel.java:88) at javax.swing.JComboBox.setSelectedItem(JComboBox.java:557) at javax.swing.JComboBox.setSelectedIndex(JComboBox.java:603) at javax.swing.plaf.basic.BasicComboPopup$Handler.mouseReleased(BasicComboPopup.java:817) at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:273) at java.awt.Component.processMouseEvent(Component.java:6267) at javax.swing.JComponent.processMouseEvent(JComponent.java:3267) at javax.swing.plaf.basic.BasicComboPopup$1.processMouseEvent(BasicComboPopup.java:481) at java.awt.Component.processEvent(Component.java:6032) at java.awt.Container.processEvent(Container.java:2041) at java.awt.Component.dispatchEventImpl(Component.java:4630) at java.awt.Container.dispatchEventImpl(Container.java:2099) at java.awt.Component.dispatchEvent(Component.java:4460) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168) at java.awt.Container.dispatchEventImpl(Container.java:2085) at java.awt.Window.dispatchEventImpl(Window.java:2478) at java.awt.Component.dispatchEvent(Component.java:4460) at java.awt.EventQueue.dispatchEvent(EventQueue.java:599) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161) at java.awt.EventDispatchThread.run(EventDispatchThread.java:122) [/color] Por que? Qual a maneira correta pra eu adicionar o autor do combobox para a jtable? Ajuda, tô começando agora a programa, por isso tanta dificuldade... :cry:
D
at java.util.ArrayList.<init>(ArrayList.java:131) 
at Visao.TabelaAutor.<init>(TabelaAutor.java:33)

Parece que você não instanciou a tua variável, faltou um

= new ArrayList<TipoDeClasseQueUsa>();
N

Jackye, o drsmachado tem razão.
Você não instanciou sua coleção; logo, dá um NullPointerException para você!

Agora, você esta QUASE certa. Você deve carregar o seu tablemodel no construtor do seu formulário.
public class FormularioDaJackye extends JFrame {

    private TabelaAutor tablemodelAutores;
    public FormularioDaJackye() {

        List<Autor> entidadeAutores = DAO.recuperarListaDeAutores();
        tablemodelAutores = new TabelaAutor(entidadeAutores);
    }
}
Agora, no seu ItemListener, você não precisa carregar novamente o TableModel. Você simplesmente chama o método addAutor do seu TableModel, envia como parâmetro o Autor escolhido e voilà!
cmbautor.addItemListener(new ItemListener() {

    @Override
    public void itemStateChanged(ItemEvent e) {

        JComboBox comboboxAuxiliar = (JComboBox) e.getSource();
        // recupero qual o autor selecionado na JComboBox...
        Autor entidadeAutorSelecionado = (Autor) comboboxAuxiliar.getSelectedItem();
        //... e adiciono-o na tabela!
        tablemodelAutores.addAutor(entidadeAutorSelecionado);
    }
});
A "graça" de se usar um TableModel é não precisar de linha/coluna para definir nada, e sim objetos propriamente ditos!

Espero ter ajudado,
Fique com Deus! :D

J

Oi! :)

Eu fiz o que pediu, inicio o tablemodel e o recarrego no construtor do meu formulário:
public class CadastroObra2 extends javax.swing.JFrame {

    private TabelaAutor tabelaAutor;

    /** Creates new form CadastroObra2 */
    public CadastroObra2() {
        List<Autor> entidadeAutores = AutorDAO.recuperarListaDeAutores();
        tabelaAutor = new TabelaAutor(entidadeAutores);

        initComponents();

        listarAutoresCombo();
        cmbautor.setSelectedIndex(-1);
    }}
mas tá dando erro na linha:
List<Autor> entidadeAutores = AutorDAO.recuperarListaDeAutores();

Mostra o seguinte:
[color=blue]
cannot find symbol
symbol: method recuperarListaDeAutores()
location: class Persistencia.AutorDAO
A variável local oculta um campo[/color]

Diz que preciso criar o método recuperarListaDeAutores() na classe DAO de Autor. Então tentei fazer assim:
/** Método que busca os campos da classe Autor.
     * @return
     */
    public static List<Autor> recuperarListaDeAutores() {
        List<Autor> autores = new ArrayList<Autor>();
        for (int i = 0; i < autores.size(); i++) {
            autores.get(i).getCodAutor();
            autores.get(i).getNome();
        }
        return autores;
    }

Só que na hora que escolhi o autor para ser add no jtable deu erro de cast:
[color=red]Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: java.lang.String cannot be cast to Dominio.Autor
at Visao.CadastroObra2$8.itemStateChanged(CadastroObra2.java:279)
at javax.swing.JComboBox.fireItemStateChanged(JComboBox.java:1205)
at javax.swing.JComboBox.selectedItemChanged(JComboBox.java:1262)
at javax.swing.JComboBox.contentsChanged(JComboBox.java:1309)
at javax.swing.AbstractListModel.fireContentsChanged(AbstractListModel.java:100)
at javax.swing.DefaultComboBoxModel.setSelectedItem(DefaultComboBoxModel.java:88)
at javax.swing.JComboBox.setSelectedItem(JComboBox.java:557)
at javax.swing.JComboBox.setSelectedIndex(JComboBox.java:603)
at javax.swing.plaf.basic.BasicComboPopup$Handler.mouseReleased(BasicComboPopup.java:817)
at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:273)
at java.awt.Component.processMouseEvent(Component.java:6267)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
at javax.swing.plaf.basic.BasicComboPopup$1.processMouseEvent(BasicComboPopup.java:481)
at java.awt.Component.processEvent(Component.java:6032)
at java.awt.Container.processEvent(Container.java:2041)
at java.awt.Component.dispatchEventImpl(Component.java:4630)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
at java.awt.Container.dispatchEventImpl(Container.java:2085)
at java.awt.Window.dispatchEventImpl(Window.java:2478)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)[/color]

Por que? :cry:

PS.: Já que

A "graça" de se usar um TableModel é não precisar de linha/coluna para definir nada, e sim objetos propriamente ditos!
, então eu posso retirar todos aqueles métodos de adicionar linha e coluna do meu TableModel?

N
Jackye:
Oi! :) Eu fiz o que pediu, inicio o tablemodel e o recarrego no construtor do meu formulário:
public class CadastroObra2 extends javax.swing.JFrame {

    private TabelaAutor tabelaAutor;

    /** Creates new form CadastroObra2 */
    public CadastroObra2() {
        List<Autor> entidadeAutores = AutorDAO.recuperarListaDeAutores();
        tabelaAutor = new TabelaAutor(entidadeAutores);

        initComponents();

        listarAutoresCombo();
        cmbautor.setSelectedIndex(-1);
    }}
Beleza, aqui tá certo. Você faz sua primeira carga do TableModel no seu construtor.
Jackye:
mas tá dando erro na linha:
List<Autor> entidadeAutores = AutorDAO.recuperarListaDeAutores();

Mostra o seguinte:
[color=blue]
cannot find symbol
symbol: method recuperarListaDeAutores()
location: class Persistencia.AutorDAO
A variável local oculta um campo[/color]

Sim, vai dar erro mesmo. Essa AutorDAO.recuperarListaDeAutores(); foi um exemplo. Você deve colocar ali seus próprios métodos para recuperar uma coleção de autores do banco de dados, ou recuperar uma coleção de autores do registro do livro que você estiver trabalhando no momento.

Jackye:
Diz que preciso criar o método recuperarListaDeAutores() na classe DAO de Autor. Então tentei fazer assim:
/** Método que busca os campos da classe Autor.
     * @return
     */
    public static List<Autor> recuperarListaDeAutores() {
        List<Autor> autores = new ArrayList<Autor>();
        for (int i = 0; i < autores.size(); i++) {
            autores.get(i).getCodAutor();
            autores.get(i).getNome();
        }
        return autores;
    }

Só que na hora que escolhi o autor para ser add no jtable deu erro de cast:
Por que? :cry:

Você sabe o que representa uma classe DAO? Ela é responsável por comunicar com o banco de dados. No caso, a ideia deste método é você fazer uma consulta no banco de dados e recuperar os dados dos autores, e não do modo que você fez. Algo parecido com isso:
public List<Autor> recuperarListaDeAutores() throws SQLException {
  
    Connection entidadeConnection = recuperarSuaConexão();
    String sentenca = "SELECT * FROM AUTORES";
    Statement entidadeStatement = entidadeConnection.createStatement(sentenca);
    ResultSet entidadeResult = entidadeStatement.executeQuery();

    List<Autor> entidadeAutores = new ArrayList<Autor>();
    while (entidadeResult.next()) {
        // monta seu objeto...
        entidadeAutores.add(autor);
    }
    entidadeResult.close();

    return entidadeAutores;
}
Jackye:
PS.: Já que
A "graça" de se usar um TableModel é não precisar de linha/coluna para definir nada, e sim objetos propriamente ditos!
, então eu posso retirar todos aqueles métodos de adicionar linha e coluna do meu TableModel?
Não, não remova não! Eu quis dizer que você não precisa ficar naqueles loops chatos com I e J, mas sim só passar objetos pra lá e a classe trata!

Espero ter ajudado,
Fique com Deus! :D

J

Olá!

Um detalhe: utilizo o Hibernate. :thumbup:

Então como faço para criar o metodo no combobox que pega o nome do autor e preenche os campos de autor na Jtable?

Até.
Agradeço pela ajuda. :smiley:

N
É só você substituir o meu código JDBC pelo seu Hibernate e ser feliz! :thumbup:
public List<Autor> recuperarListaDeAutores() throws HibernateException {

    Session entidadeSession = HibernateUtil.getSession();
    return (List<Autor>) entidadeSession.createCriteria(Autor.class).list();
}
J

Olá!

Olha como eu refiz: TABLEMODEL:
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.Visao.TableModels;

import br.com.Dominio.Autor;
import java.util.ArrayList;
import java.util.Collection;
import java.util.EventListener;
import java.util.List;
import javax.swing.event.EventListenerList;
import javax.swing.event.TableModelListener;
import javax.swing.table.AbstractTableModel;

/**
 *
 * @author Jackeline
 */
public class TableModelAutor extends AbstractTableModel {

    private List<Autor> autores;
    private static final String[] colunas = {"Código", "Nome do Autor"};

    public TableModelAutor(List<Autor> autores) {
        this.autores = autores;
        fireTableStructureChanged();
    }

    @Override
    public int getRowCount() {
        return autores.size();
    }

    @Override
    public int getColumnCount() {
        return colunas.length;
    }

    @Override
    public Object getValueAt(int rowIndex, int columnIndex) {
        Autor autor = autores.get(rowIndex);
        Object dado = null;
        switch (columnIndex) {
            case 0:
                dado = autor.getCodAutor();
                break;
            case 1:
                dado = autor.getNoAutor();
                break;
        }
        return dado;
    }

    public static String[] getColunas() {
        return colunas;
    }

    @Override
    public Class<?> getColumnClass(int columnIndex) {
        return super.getColumnClass(columnIndex);
    }

    @Override
    public String getColumnName(int column) {
        return super.getColumnName(column);
    }

    @Override
    public <T extends EventListener> T[] getListeners(Class<T> listenerType) {
        return super.getListeners(listenerType);
    }

    @Override
    public TableModelListener[] getTableModelListeners() {
        return super.getTableModelListeners();
    }

    @Override
    public boolean isCellEditable(int rowIndex, int columnIndex) {
        return false;
    }

    @Override
    public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
        super.setValueAt(aValue, rowIndex, columnIndex);
    }

    public List<Autor> getAutores() {
        return autores;
    }

    public void setAutores(List<Autor> autores) {
        this.autores = autores;
    }

    public boolean containsAll(Collection<?> c) {
        return autores.containsAll(c);
    }

    public boolean addAll(Collection<? extends Autor> c) {
        return autores.addAll(c);
    }

    public EventListenerList getListenerList() {
        return listenerList;
    }

    public void setListenerList(EventListenerList listenerList) {
        this.listenerList = listenerList;
    }

    public Autor remove(int index) {
        return autores.remove(index);
    }

    public boolean isEmpty() {
        return autores.isEmpty();
    }

    public void clear() {
        autores.clear();
    }
}
Veja no escopo do meu formulário:
public class CadastrarLivro extends javax.swing.JFrame {
    private TableModelAutor tabelaModelAutor;

    /**
     * Creates new form CadastroLivro
     */
    public CadastrarLivro() {

        List<Autor> entidadeAutores = AutorDAO.recuperarListaDeAutores();
        tabelaModelAutor = new TableModelAutor(entidadeAutores);

        initComponents();
    }
Lá no AutorDAO criei o método recuperarListaDeAutores():
public static List<Autor> recuperarListaDeAutores() throws HibernateException {
        Session sessao = HibernateUtil.getSessionFactory().openSession();
        return (List<Autor>) sessao.createCriteria(Autor.class).list();
    }
No JCombobox que é populado com o nome dos autores, adicionei o evento FocusGained e inseri o método listener:
private void cmdSelecionarAutorFocusGained(java.awt.event.FocusEvent evt) {
        // TODO add your handling code here:
        cmdSelecionarAutor.addItemListener(new ItemListener() {

            @Override
            public void itemStateChanged(ItemEvent e) {
                JComboBox comboboxAutor = (JComboBox) e.getSource();
                Autor AutorSelecionado = (Autor) comboboxAutor.getSelectedItem();
                jTbAutor.getModel().addTableModelListener(jTbAutor);
            }
        });
    }

Quando executo, continua dando erro de cast! :cry:
E mostra o seguinte:
[color=red]Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: java.lang.String cannot be cast to br.com.Dominio.Autor
at br.com.Visao.CadastrarLivro$11.itemStateChanged(CadastrarLivro.java:775)
at javax.swing.JComboBox.fireItemStateChanged(JComboBox.java:1205)
at javax.swing.JComboBox.selectedItemChanged(JComboBox.java:1262)
at javax.swing.JComboBox.contentsChanged(JComboBox.java:1309)
at javax.swing.AbstractListModel.fireContentsChanged(AbstractListModel.java:100)
at javax.swing.DefaultComboBoxModel.setSelectedItem(DefaultComboBoxModel.java:88)
at javax.swing.JComboBox.setSelectedItem(JComboBox.java:557)
at javax.swing.JComboBox.setSelectedIndex(JComboBox.java:603)
at javax.swing.plaf.basic.BasicComboPopup$Handler.mouseReleased(BasicComboPopup.java:817)
at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:273)
at java.awt.Component.processMouseEvent(Component.java:6267)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
at javax.swing.plaf.basic.BasicComboPopup$1.processMouseEvent(BasicComboPopup.java:481)
at java.awt.Component.processEvent(Component.java:6032)
at java.awt.Container.processEvent(Container.java:2041)
at java.awt.Component.dispatchEventImpl(Component.java:4630)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
at java.awt.Container.dispatchEventImpl(Container.java:2085)
at java.awt.Window.dispatchEventImpl(Window.java:2478)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)[/color]

Será que tem haver com o tipo de evento? como faço para inserir o método num botão?
Preciso de ajuda. Tõ enrolada com o uso de tableModel. :(
A propósito, na TableModel há muitos métodos que não são utilizados? Ou eu preciso inserir mais métodos?

F

Acho que o teu problema é o mesmo que eu tive há um tempo atrás (acho que é bug…).
Tenta dar um comboBox.getModel().getSelectedItem().

N

Como você está populando a sua JComboBox?

J

Olá!

Respondendo ao Nicolas Fernandes:
Como você está populando a sua JComboBox?
Eu faço o seguinte: Criei um método a seguir:
private void popularComboboxAutor() {
        Session sessao = HibernateUtil.getSessionFactory().openSession();
        autores = sessao.createQuery("FROM Autor").list();
        if (autores.isEmpty()) {
            JOptionPane.showMessageDialog(null, "Nenhum registro de Autor foi encontrado.");
        } else {
            cmdSelecionarAutor.removeAllItems();
            for (int i = 0; i < autores.size(); i++) {
                cmdSelecionarAutor.addItem(autores.get(i).getNoAutor());
            }
        }
        sessao.close();
    }
E chamo ele lá no InitComponents:
public class CadastrarLivro extends javax.swing.JFrame {  
    private TableModelAutor tabelaModelAutor;  
  
    /** 
     * Creates new form CadastroLivro 
     */  
    public CadastrarLivro() {  
  
        List<Autor> entidadeAutores = AutorDAO.recuperarListaDeAutores();  
        tabelaModelAutor = new TableModelAutor(entidadeAutores);  
  
        initComponents();  
//Chamo o método aqui.
popularComboboxAutor();
    }
fasts, onde insiro essa linha de código?
comboBox.getModel().getSelectedItem().
Eu coloco essa no lugar de
Autor AutorSelecionado = (Autor) comboboxAutor.getSelectedItem();
?

Até.

J

Olá! :D

Eu analisei o meu método no combobox:
private void cmdSelecionarAutorFocusGained(java.awt.event.FocusEvent evt) {                                               
        cmdSelecionarAutor.addItemListener(new ItemListener() {

            @Override
            public void itemStateChanged(ItemEvent e) {
                JComboBox comboboxAutor = (JComboBox) e.getSource();
                Autor AutorSelecionado = (Autor) comboboxAutor.getSelectedItem();
                cmdSelecionarAutor.getModel().getSelectedItem();
                jTbAutor.getModel().addTableModelListener(jTbAutor);
            }
        });
    }
e a linha que provoca o erro é justamente esta:
Autor AutorSelecionado = (Autor) comboboxAutor.getSelectedItem();

Como resolvo isso?

Até.

N

Suspeitei desde o princípio...

Você tá preenchendo sua JComboBox com strings, e não com objetos do tipo Autor!

Ao invés de fazer desse teu jeito, faça assim:
// Coloque em um método separado. Baixo acoplamento, alta coesão, padrão de programação correto!  :thumbup: 
public List<Autor> recuperarListaDeAutores() throws HibernateException {

    Session sessao = HibernateUtil.getSessionFactory().openSession();
    return sessao.createQuery("FROM Autor").list();
}
Agora, no seu método popularComboboxAutor...
private void popularComboboxAutor() {

    try {

        cmdSelecionarAutor.removeAllItems();
        List<Autor> entidadeAutores = recuperarListaDeAutores();
 
        if (entidadeAutores.isEmpty()) {
            JOptionPane.showMessageDialog(null, "Nenhum autor.");
        }
        else {
        
            // ou...
            for (Autor entidadeAutor : entidadeAutores) {
                cmdSelecionarAutor.addItem(entidadeAutor);
            }

            //ou...
            cmdSelecionarAutor.setModel(new DefaultComboBoxModel(entidadeAutores.toArray()));
        }
    }
    catch (HibernateException hibernateException) {
        JOptionPane.showMessageDialog(String.format("%s - %s", "Erro no banco de dados!", hibernateException.getMessage()));
    }
    catch (Exception generalException) {
        JOptionPane.showMessageDialog(String.format("%s - %s", "Erro geral!", generalException.getMessage()));
    }
}

Não se esqueça de:
1. Colocar o método recuperarListaDeAutores na suas classes que oferecem os serviços da persistência para a visão;
2. Adotar um padrão de desenvolvimento. Use o design pattern MVC, que é bem simples, inteligível e deixa o seu projeto bem adequado às normas de desenvolvimento.

Espero ter ajudado,
fique com Deus! :D

J
Oi. :D A jtable não tá listando. O comobobox mostra uma lista igual a: br.com.Dominio.Autor[codAutor=1][b] e assim sucessivamente. Veja como tá toda a estrutura do meu formulário:
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.Visao;

import br.com.Dominio.Autor;
import br.com.Dominio.Editora;
import br.com.Dominio.Exemplar;
import br.com.Dominio.Livro;
import br.com.Dominio.Secao;
import br.com.Persistencia.AutorDAO;
import br.com.Persistencia.ExemplarDAO;
import br.com.Persistencia.HibernateUtil;
import br.com.Persistencia.LivroDAO;
import br.com.Visao.TableModels.TableModelAutor;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JComboBox;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import javax.swing.text.MaskFormatter;
import org.hibernate.HibernateException;
import org.hibernate.Session;

/**
 *
 * @author Junior
 */
public class CadastrarLivro extends javax.swing.JFrame {

    MaskFormatter daCadastro;
    private TableModelAutor tabelaModelAutor;

    /**
     * Creates new form CadastroLivro
     */
    public CadastrarLivro() {

        try {
            daCadastro = new MaskFormatter("##/##/####");
            daCadastro.setPlaceholderCharacter('_');
        } catch (ParseException ex) {
            Logger.getLogger(CadastrarLivro.class.getName()).log(Level.SEVERE, null, ex);
        }

        List<Autor> entidadeAutores = AutorDAO.recuperarListaDeAutores();
        tabelaModelAutor = new TableModelAutor(entidadeAutores);

        initComponents();

        popularComboboxEditora();
        popularComboboxSecao();
        popularComboboxAutor();
        mostrarDataAtualCadastro();

        cmdSelecionarAutor.setSelectedIndex(-1);
        cmdSelecionarEditora.setSelectedIndex(-1);
        cmdSelecionarSecao.setSelectedIndex(-1);
    }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">
    private void initComponents() {

        pnlDesign = new javax.swing.JPanel();
        pnlCadastroObra = new javax.swing.JPanel();
        camposObrigatoriosLivro = new javax.swing.JLabel();
        codLivro = new javax.swing.JTextField();
        codigo = new javax.swing.JLabel();
        pnlDadosObra = new javax.swing.JPanel();
        referencia = new javax.swing.JLabel();
        campoObrigatorio10 = new javax.swing.JLabel();
        nuReferencia = new javax.swing.JTextField();
        volume = new javax.swing.JLabel();
        campoObrigatorio11 = new javax.swing.JLabel();
        nuVolume = new javax.swing.JTextField();
        edicao = new javax.swing.JLabel();
        campoObrigatorio12 = new javax.swing.JLabel();
        nuEdicao = new javax.swing.JTextField();
        anoEdicao = new javax.swing.JLabel();
        campoObrigatorio13 = new javax.swing.JLabel();
        nuAnoEdicao = new javax.swing.JTextField();
        isbn = new javax.swing.JLabel();
        campoObrigatorio14 = new javax.swing.JLabel();
        nuISBN = new javax.swing.JTextField();
        pnlInformacoesGerais = new javax.swing.JPanel();
        txtituloObra = new javax.swing.JTextField();
        tituloObra = new javax.swing.JLabel();
        campoObrigatorio1 = new javax.swing.JLabel();
        nudataCadastro = new javax.swing.JFormattedTextField(daCadastro);
        dataCadastro = new javax.swing.JLabel();
        numeroExemplar = new javax.swing.JLabel();
        campoObrigatorio7 = new javax.swing.JLabel();
        nuExemplare = new javax.swing.JTextField();
        secao = new javax.swing.JLabel();
        campoObrigatorio3 = new javax.swing.JLabel();
        cmdSelecionarSecao = new javax.swing.JComboBox();
        editora = new javax.swing.JLabel();
        campoObrigatorio8 = new javax.swing.JLabel();
        cmdSelecionarEditora = new javax.swing.JComboBox();
        txObservacao = new javax.swing.JTextField();
        observacao = new javax.swing.JLabel();
        btnSair = new javax.swing.JButton();
        jCheckBoxGravarVariosExemplaresLivro = new javax.swing.JCheckBox();
        jCheckBoxNaoDisponibilizarEmprestimoLivro = new javax.swing.JCheckBox();
        pnlAutor = new javax.swing.JPanel();
        Autor = new javax.swing.JLabel();
        cmdSelecionarAutor = new javax.swing.JComboBox();
        btnAdicionarAutor = new javax.swing.JButton();
        btnExcluirAutor = new javax.swing.JButton();
        campoObrigatorio4 = new javax.swing.JLabel();
        jScrollPane1 = new javax.swing.JScrollPane();
        jTbAutor = new javax.swing.JTable();
        btnSalvar = new javax.swing.JButton();
        btnLimpar = new javax.swing.JButton();
        MenuLivro = new javax.swing.JMenuBar();
        MenuCadastroLivro = new javax.swing.JMenu();

        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
        setTitle("Sistema de Controle Bibliotecário [Cadastrar Obra] ");
        setResizable(false);

        pnlDesign.setBackground(new java.awt.Color(0, 102, 153));
        pnlDesign.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.RAISED));

        javax.swing.GroupLayout pnlDesignLayout = new javax.swing.GroupLayout(pnlDesign);
        pnlDesign.setLayout(pnlDesignLayout);
        pnlDesignLayout.setHorizontalGroup(
            pnlDesignLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 857, Short.MAX_VALUE)
        );
        pnlDesignLayout.setVerticalGroup(
            pnlDesignLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 0, Short.MAX_VALUE)
        );

        pnlCadastroObra.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.RAISED));

        camposObrigatoriosLivro.setFont(new java.awt.Font("Tahoma", 2, 11));
        camposObrigatoriosLivro.setForeground(java.awt.Color.red);
        camposObrigatoriosLivro.setText("* Campos de preenchimento obrigatório");

        codLivro.setEditable(false);
        codLivro.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                codLivroActionPerformed(evt);
            }
        });

        codigo.setFont(new java.awt.Font("Tahoma", 1, 11));
        codigo.setText("Código:");

        pnlDadosObra.setBorder(javax.swing.BorderFactory.createTitledBorder(""));

        referencia.setFont(new java.awt.Font("Tahoma", 1, 11));
        referencia.setText("Referência:");

        campoObrigatorio10.setFont(new java.awt.Font("Tahoma", 2, 11));
        campoObrigatorio10.setForeground(java.awt.Color.red);
        campoObrigatorio10.setText("* ");

        volume.setFont(new java.awt.Font("Tahoma", 1, 11));
        volume.setText("Volume:");

        campoObrigatorio11.setFont(new java.awt.Font("Tahoma", 2, 11));
        campoObrigatorio11.setForeground(java.awt.Color.red);
        campoObrigatorio11.setText("* ");

        nuVolume.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                nuVolumeActionPerformed(evt);
            }
        });

        edicao.setFont(new java.awt.Font("Tahoma", 1, 11));
        edicao.setText("Edição:");

        campoObrigatorio12.setFont(new java.awt.Font("Tahoma", 2, 11));
        campoObrigatorio12.setForeground(java.awt.Color.red);
        campoObrigatorio12.setText("* ");

        anoEdicao.setFont(new java.awt.Font("Tahoma", 1, 11));
        anoEdicao.setText("Ano de Edição:");

        campoObrigatorio13.setFont(new java.awt.Font("Tahoma", 2, 11));
        campoObrigatorio13.setForeground(java.awt.Color.red);
        campoObrigatorio13.setText("* ");

        isbn.setFont(new java.awt.Font("Tahoma", 1, 11));
        isbn.setText("ISBN:");

        campoObrigatorio14.setFont(new java.awt.Font("Tahoma", 2, 11));
        campoObrigatorio14.setForeground(java.awt.Color.red);
        campoObrigatorio14.setText("* ");

        javax.swing.GroupLayout pnlDadosObraLayout = new javax.swing.GroupLayout(pnlDadosObra);
        pnlDadosObra.setLayout(pnlDadosObraLayout);
        pnlDadosObraLayout.setHorizontalGroup(
            pnlDadosObraLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(pnlDadosObraLayout.createSequentialGroup()
                .addGroup(pnlDadosObraLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addGroup(pnlDadosObraLayout.createSequentialGroup()
                        .addComponent(campoObrigatorio13, javax.swing.GroupLayout.DEFAULT_SIZE, 9, Short.MAX_VALUE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(pnlDadosObraLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(anoEdicao, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, pnlDadosObraLayout.createSequentialGroup()
                                .addGap(2, 2, 2)
                                .addComponent(campoObrigatorio10, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(referencia, javax.swing.GroupLayout.DEFAULT_SIZE, 64, Short.MAX_VALUE))
                            .addGroup(pnlDadosObraLayout.createSequentialGroup()
                                .addGroup(pnlDadosObraLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                                    .addGroup(pnlDadosObraLayout.createSequentialGroup()
                                        .addGap(19, 19, 19)
                                        .addComponent(campoObrigatorio11, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                        .addComponent(volume, javax.swing.GroupLayout.DEFAULT_SIZE, 45, Short.MAX_VALUE))
                                    .addGroup(javax.swing.GroupLayout.Alignment.LEADING, pnlDadosObraLayout.createSequentialGroup()
                                        .addGap(25, 25, 25)
                                        .addComponent(campoObrigatorio12, javax.swing.GroupLayout.DEFAULT_SIZE, 9, Short.MAX_VALUE)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                        .addComponent(edicao, javax.swing.GroupLayout.DEFAULT_SIZE, 39, Short.MAX_VALUE)))
                                .addGap(2, 2, 2))))
                    .addGroup(pnlDadosObraLayout.createSequentialGroup()
                        .addGap(52, 52, 52)
                        .addComponent(campoObrigatorio14, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(isbn, javax.swing.GroupLayout.DEFAULT_SIZE, 29, Short.MAX_VALUE)))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(pnlDadosObraLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(nuReferencia, javax.swing.GroupLayout.DEFAULT_SIZE, 109, Short.MAX_VALUE)
                    .addComponent(nuVolume, javax.swing.GroupLayout.DEFAULT_SIZE, 109, Short.MAX_VALUE)
                    .addComponent(nuEdicao, javax.swing.GroupLayout.DEFAULT_SIZE, 109, Short.MAX_VALUE)
                    .addComponent(nuISBN, javax.swing.GroupLayout.DEFAULT_SIZE, 109, Short.MAX_VALUE)
                    .addComponent(nuAnoEdicao, javax.swing.GroupLayout.DEFAULT_SIZE, 109, Short.MAX_VALUE))
                .addContainerGap())
        );
        pnlDadosObraLayout.setVerticalGroup(
            pnlDadosObraLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(pnlDadosObraLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(pnlDadosObraLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(pnlDadosObraLayout.createSequentialGroup()
                        .addGap(6, 6, 6)
                        .addComponent(referencia, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                    .addGroup(pnlDadosObraLayout.createSequentialGroup()
                        .addGap(6, 6, 6)
                        .addComponent(campoObrigatorio10, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                    .addComponent(nuReferencia))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(pnlDadosObraLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(pnlDadosObraLayout.createSequentialGroup()
                        .addGap(6, 6, 6)
                        .addComponent(volume, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                    .addGroup(pnlDadosObraLayout.createSequentialGroup()
                        .addGap(6, 6, 6)
                        .addComponent(campoObrigatorio11, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                    .addComponent(nuVolume))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(pnlDadosObraLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(pnlDadosObraLayout.createSequentialGroup()
                        .addGap(6, 6, 6)
                        .addComponent(edicao, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                    .addGroup(pnlDadosObraLayout.createSequentialGroup()
                        .addGap(6, 6, 6)
                        .addComponent(campoObrigatorio12, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                    .addComponent(nuEdicao))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(pnlDadosObraLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(pnlDadosObraLayout.createSequentialGroup()
                        .addGroup(pnlDadosObraLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(anoEdicao, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .addComponent(campoObrigatorio13, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                        .addGap(6, 6, 6))
                    .addComponent(nuAnoEdicao))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(pnlDadosObraLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(pnlDadosObraLayout.createSequentialGroup()
                        .addGap(6, 6, 6)
                        .addComponent(isbn, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                    .addGroup(pnlDadosObraLayout.createSequentialGroup()
                        .addGap(6, 6, 6)
                        .addComponent(campoObrigatorio14, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                    .addComponent(nuISBN))
                .addGap(24, 24, 24))
        );

        pnlInformacoesGerais.setBorder(javax.swing.BorderFactory.createTitledBorder(""));

        txtituloObra.setToolTipText("Nome da obra sem abreviação");

        tituloObra.setFont(new java.awt.Font("Tahoma", 1, 11));
        tituloObra.setText("Título da Obra:");

        campoObrigatorio1.setFont(new java.awt.Font("Tahoma", 2, 11));
        campoObrigatorio1.setForeground(java.awt.Color.red);
        campoObrigatorio1.setText("* ");

        nudataCadastro.setEditable(false);
        nudataCadastro.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                nudataCadastroActionPerformed(evt);
            }
        });

        dataCadastro.setFont(new java.awt.Font("Tahoma", 1, 11));
        dataCadastro.setText("Data de Cadastro:");

        numeroExemplar.setFont(new java.awt.Font("Tahoma", 1, 11));
        numeroExemplar.setText("N° de Exemplares:");

        campoObrigatorio7.setFont(new java.awt.Font("Tahoma", 2, 11));
        campoObrigatorio7.setForeground(java.awt.Color.red);
        campoObrigatorio7.setText("* ");

        nuExemplare.setToolTipText("Informação necessária para gravação de vários exemplares iguais");

        secao.setFont(new java.awt.Font("Tahoma", 1, 11));
        secao.setText("Seção:");

        campoObrigatorio3.setFont(new java.awt.Font("Tahoma", 2, 11));
        campoObrigatorio3.setForeground(java.awt.Color.red);
        campoObrigatorio3.setText("* ");

        cmdSelecionarSecao.setFont(new java.awt.Font("Tahoma", 1, 11));
        cmdSelecionarSecao.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "- Selecione -", " " }));

        editora.setFont(new java.awt.Font("Tahoma", 1, 11));
        editora.setText("Editora:");

        campoObrigatorio8.setFont(new java.awt.Font("Tahoma", 2, 11));
        campoObrigatorio8.setForeground(java.awt.Color.red);
        campoObrigatorio8.setText("* ");

        cmdSelecionarEditora.setFont(new java.awt.Font("Tahoma", 1, 11));
        cmdSelecionarEditora.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "- Selecione -" }));

        txObservacao.setToolTipText("Observação, caso seja necessário...");

        observacao.setFont(new java.awt.Font("Tahoma", 1, 11));
        observacao.setText("Observação:");

        javax.swing.GroupLayout pnlInformacoesGeraisLayout = new javax.swing.GroupLayout(pnlInformacoesGerais);
        pnlInformacoesGerais.setLayout(pnlInformacoesGeraisLayout);
        pnlInformacoesGeraisLayout.setHorizontalGroup(
            pnlInformacoesGeraisLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(pnlInformacoesGeraisLayout.createSequentialGroup()
                .addGroup(pnlInformacoesGeraisLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(pnlInformacoesGeraisLayout.createSequentialGroup()
                        .addGroup(pnlInformacoesGeraisLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                            .addGroup(pnlInformacoesGeraisLayout.createSequentialGroup()
                                .addGap(65, 65, 65)
                                .addComponent(campoObrigatorio3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(secao, javax.swing.GroupLayout.DEFAULT_SIZE, 37, Short.MAX_VALUE))
                            .addGroup(javax.swing.GroupLayout.Alignment.LEADING, pnlInformacoesGeraisLayout.createSequentialGroup()
                                .addComponent(campoObrigatorio7, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(numeroExemplar, javax.swing.GroupLayout.DEFAULT_SIZE, 102, Short.MAX_VALUE))
                            .addGroup(pnlInformacoesGeraisLayout.createSequentialGroup()
                                .addGap(20, 20, 20)
                                .addComponent(campoObrigatorio1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(tituloObra, javax.swing.GroupLayout.DEFAULT_SIZE, 82, Short.MAX_VALUE)))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(pnlInformacoesGeraisLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addGroup(pnlInformacoesGeraisLayout.createSequentialGroup()
                                .addGroup(pnlInformacoesGeraisLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                                    .addGroup(javax.swing.GroupLayout.Alignment.LEADING, pnlInformacoesGeraisLayout.createSequentialGroup()
                                        .addComponent(nuExemplare, javax.swing.GroupLayout.DEFAULT_SIZE, 46, Short.MAX_VALUE)
                                        .addGap(107, 107, 107))
                                    .addComponent(cmdSelecionarSecao, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, 153, javax.swing.GroupLayout.PREFERRED_SIZE))
                                .addGap(55, 55, 55)
                                .addGroup(pnlInformacoesGeraisLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                                    .addGroup(pnlInformacoesGeraisLayout.createSequentialGroup()
                                        .addGap(27, 27, 27)
                                        .addComponent(dataCadastro, javax.swing.GroupLayout.DEFAULT_SIZE, 101, Short.MAX_VALUE)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                        .addComponent(nudataCadastro, javax.swing.GroupLayout.DEFAULT_SIZE, 81, Short.MAX_VALUE))
                                    .addGroup(pnlInformacoesGeraisLayout.createSequentialGroup()
                                        .addComponent(campoObrigatorio8, javax.swing.GroupLayout.DEFAULT_SIZE, 9, Short.MAX_VALUE)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                        .addComponent(editora, javax.swing.GroupLayout.DEFAULT_SIZE, 43, Short.MAX_VALUE)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                        .addComponent(cmdSelecionarEditora, javax.swing.GroupLayout.PREFERRED_SIZE, 151, javax.swing.GroupLayout.PREFERRED_SIZE))))
                            .addComponent(txtituloObra, javax.swing.GroupLayout.DEFAULT_SIZE, 421, Short.MAX_VALUE))
                        .addGap(0, 0, 0))
                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, pnlInformacoesGeraisLayout.createSequentialGroup()
                        .addGap(47, 47, 47)
                        .addComponent(observacao, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(txObservacao, javax.swing.GroupLayout.PREFERRED_SIZE, 421, javax.swing.GroupLayout.PREFERRED_SIZE)))
                .addContainerGap())
        );
        pnlInformacoesGeraisLayout.setVerticalGroup(
            pnlInformacoesGeraisLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(pnlInformacoesGeraisLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(pnlInformacoesGeraisLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(pnlInformacoesGeraisLayout.createSequentialGroup()
                        .addGap(6, 6, 6)
                        .addComponent(tituloObra, javax.swing.GroupLayout.DEFAULT_SIZE, 15, Short.MAX_VALUE))
                    .addGroup(pnlInformacoesGeraisLayout.createSequentialGroup()
                        .addGap(6, 6, 6)
                        .addComponent(campoObrigatorio1, javax.swing.GroupLayout.DEFAULT_SIZE, 15, Short.MAX_VALUE))
                    .addComponent(txtituloObra, javax.swing.GroupLayout.DEFAULT_SIZE, 21, Short.MAX_VALUE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(pnlInformacoesGeraisLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(pnlInformacoesGeraisLayout.createSequentialGroup()
                        .addGap(6, 6, 6)
                        .addComponent(numeroExemplar, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                    .addGroup(pnlInformacoesGeraisLayout.createSequentialGroup()
                        .addGap(6, 6, 6)
                        .addComponent(campoObrigatorio7, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                    .addGroup(pnlInformacoesGeraisLayout.createSequentialGroup()
                        .addGap(6, 6, 6)
                        .addComponent(dataCadastro, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                    .addGroup(pnlInformacoesGeraisLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                        .addComponent(nuExemplare)
                        .addComponent(nudataCadastro)))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(pnlInformacoesGeraisLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(pnlInformacoesGeraisLayout.createSequentialGroup()
                        .addGap(8, 8, 8)
                        .addComponent(campoObrigatorio3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                    .addGroup(pnlInformacoesGeraisLayout.createSequentialGroup()
                        .addGap(8, 8, 8)
                        .addComponent(secao, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                    .addGroup(pnlInformacoesGeraisLayout.createSequentialGroup()
                        .addGap(8, 8, 8)
                        .addComponent(campoObrigatorio8, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                    .addGroup(pnlInformacoesGeraisLayout.createSequentialGroup()
                        .addGap(8, 8, 8)
                        .addComponent(editora, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                    .addGroup(pnlInformacoesGeraisLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                        .addComponent(cmdSelecionarSecao)
                        .addComponent(cmdSelecionarEditora)))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(pnlInformacoesGeraisLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(pnlInformacoesGeraisLayout.createSequentialGroup()
                        .addGap(6, 6, 6)
                        .addComponent(observacao, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                    .addComponent(txObservacao))
                .addContainerGap())
        );

        btnSair.setFont(new java.awt.Font("Tahoma", 1, 11));
        btnSair.setIcon(new javax.swing.ImageIcon(getClass().getResource("/br/com/Recursos/button_cancel.png"))); // NOI18N
        btnSair.setText("Cancelar");
        btnSair.setMaximumSize(new java.awt.Dimension(95, 25));
        btnSair.setMinimumSize(new java.awt.Dimension(95, 25));
        btnSair.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnSairActionPerformed(evt);
            }
        });

        jCheckBoxGravarVariosExemplaresLivro.setFont(new java.awt.Font("Tahoma", 1, 11));
        jCheckBoxGravarVariosExemplaresLivro.setText("Gravação de vários exemplares iguais.");

        jCheckBoxNaoDisponibilizarEmprestimoLivro.setFont(new java.awt.Font("Tahoma", 1, 11));
        jCheckBoxNaoDisponibilizarEmprestimoLivro.setText("Não disponibilizar para empréstimo.");

        pnlAutor.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Tahoma", 1, 11))); // NOI18N

        Autor.setFont(new java.awt.Font("Tahoma", 1, 11));
        Autor.setText("Autor(es):");

        cmdSelecionarAutor.setFont(new java.awt.Font("Tahoma", 1, 11));
        cmdSelecionarAutor.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "- Selecione -" }));
        cmdSelecionarAutor.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                cmdSelecionarAutorActionPerformed(evt);
            }
        });
        cmdSelecionarAutor.addFocusListener(new java.awt.event.FocusAdapter() {
            public void focusGained(java.awt.event.FocusEvent evt) {
                cmdSelecionarAutorFocusGained(evt);
            }
        });

        btnAdicionarAutor.setFont(new java.awt.Font("Tahoma", 1, 11));
        btnAdicionarAutor.setIcon(new javax.swing.ImageIcon(getClass().getResource("/br/com/Recursos/button_ok.png"))); // NOI18N
        btnAdicionarAutor.setText("Adicionar autor à obra");
        btnAdicionarAutor.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnAdicionarAutorActionPerformed(evt);
            }
        });

        btnExcluirAutor.setFont(new java.awt.Font("Tahoma", 1, 11));
        btnExcluirAutor.setIcon(new javax.swing.ImageIcon(getClass().getResource("/br/com/Recursos/button_cancel.png"))); // NOI18N
        btnExcluirAutor.setText("Excluir autor da obra");

        campoObrigatorio4.setFont(new java.awt.Font("Tahoma", 2, 11));
        campoObrigatorio4.setForeground(java.awt.Color.red);
        campoObrigatorio4.setText("* ");

        jTbAutor.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.RAISED));
        jTbAutor.setFont(new java.awt.Font("Tahoma", 1, 11));
        jTbAutor.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {
                {null, null},
                {null, null},
                {null, null},
                {null, null},
                {null, null},
                {null, null},
                {null, null},
                {null, null},
                {null, null},
                {null, null},
                {null, null},
                {null, null},
                {null, null},
                {null, null},
                {null, null},
                {null, null},
                {null, null},
                {null, null},
                {null, null},
                {null, null}
            },
            new String [] {
                "Código", "Nome do Autor"
            }
        ) {
            boolean[] canEdit = new boolean [] {
                false, false
            };

            public boolean isCellEditable(int rowIndex, int columnIndex) {
                return canEdit [columnIndex];
            }
        });
        jScrollPane1.setViewportView(jTbAutor);

        javax.swing.GroupLayout pnlAutorLayout = new javax.swing.GroupLayout(pnlAutor);
        pnlAutor.setLayout(pnlAutorLayout);
        pnlAutorLayout.setHorizontalGroup(
            pnlAutorLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(pnlAutorLayout.createSequentialGroup()
                .addGroup(pnlAutorLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                    .addGroup(pnlAutorLayout.createSequentialGroup()
                        .addGap(72, 72, 72)
                        .addComponent(jScrollPane1, 0, 0, Short.MAX_VALUE))
                    .addGroup(javax.swing.GroupLayout.Alignment.LEADING, pnlAutorLayout.createSequentialGroup()
                        .addComponent(campoObrigatorio4)
                        .addGap(1, 1, 1)
                        .addComponent(Autor)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(pnlAutorLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addGroup(pnlAutorLayout.createSequentialGroup()
                                .addComponent(btnAdicionarAutor, javax.swing.GroupLayout.PREFERRED_SIZE, 212, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addGap(44, 44, 44)
                                .addComponent(btnExcluirAutor, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                            .addComponent(cmdSelecionarAutor, 0, 470, Short.MAX_VALUE))))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );
        pnlAutorLayout.setVerticalGroup(
            pnlAutorLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(pnlAutorLayout.createSequentialGroup()
                .addGroup(pnlAutorLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(pnlAutorLayout.createSequentialGroup()
                        .addGap(8, 8, 8)
                        .addComponent(Autor, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                    .addGroup(pnlAutorLayout.createSequentialGroup()
                        .addGap(8, 8, 8)
                        .addComponent(campoObrigatorio4, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                    .addComponent(cmdSelecionarAutor))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(pnlAutorLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(btnExcluirAutor, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(btnAdicionarAutor, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 116, Short.MAX_VALUE)
                .addContainerGap())
        );

        btnSalvar.setFont(new java.awt.Font("Tahoma", 1, 11));
        btnSalvar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/br/com/Recursos/button_ok.png"))); // NOI18N
        btnSalvar.setText("Salvar");
        btnSalvar.setMaximumSize(new java.awt.Dimension(95, 25));
        btnSalvar.setMinimumSize(new java.awt.Dimension(95, 25));
        btnSalvar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnSalvarActionPerformed(evt);
            }
        });

        btnLimpar.setFont(new java.awt.Font("Tahoma", 1, 11));
        btnLimpar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/br/com/Recursos/CCleaner-64.png"))); // NOI18N
        btnLimpar.setText("Limpar");
        btnLimpar.setMaximumSize(new java.awt.Dimension(95, 25));
        btnLimpar.setMinimumSize(new java.awt.Dimension(95, 25));
        btnLimpar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnLimparActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout pnlCadastroObraLayout = new javax.swing.GroupLayout(pnlCadastroObra);
        pnlCadastroObra.setLayout(pnlCadastroObraLayout);
        pnlCadastroObraLayout.setHorizontalGroup(
            pnlCadastroObraLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(pnlCadastroObraLayout.createSequentialGroup()
                .addGroup(pnlCadastroObraLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(pnlCadastroObraLayout.createSequentialGroup()
                        .addGap(208, 208, 208)
                        .addComponent(camposObrigatoriosLivro)
                        .addGap(0, 175, Short.MAX_VALUE))
                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, pnlCadastroObraLayout.createSequentialGroup()
                        .addContainerGap()
                        .addGroup(pnlCadastroObraLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                            .addComponent(pnlAutor, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .addComponent(pnlInformacoesGerais, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .addGroup(pnlCadastroObraLayout.createSequentialGroup()
                                .addComponent(btnSalvar, javax.swing.GroupLayout.PREFERRED_SIZE, 93, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(btnLimpar, javax.swing.GroupLayout.PREFERRED_SIZE, 97, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 267, Short.MAX_VALUE)
                                .addComponent(btnSair, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))))
                .addGap(12, 12, 12)
                .addGroup(pnlCadastroObraLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, pnlCadastroObraLayout.createSequentialGroup()
                        .addComponent(codigo)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addComponent(codLivro, javax.swing.GroupLayout.PREFERRED_SIZE, 86, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(63, 63, 63))
                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, pnlCadastroObraLayout.createSequentialGroup()
                        .addGap(2, 2, 2)
                        .addGroup(pnlCadastroObraLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addGroup(pnlCadastroObraLayout.createSequentialGroup()
                                .addComponent(jCheckBoxNaoDisponibilizarEmprestimoLivro, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                .addGap(16, 16, 16))
                            .addComponent(jCheckBoxGravarVariosExemplaresLivro, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                        .addContainerGap())
                    .addGroup(pnlCadastroObraLayout.createSequentialGroup()
                        .addComponent(pnlDadosObra, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                        .addGap(20, 20, 20))))
        );
        pnlCadastroObraLayout.setVerticalGroup(
            pnlCadastroObraLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(pnlCadastroObraLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(pnlCadastroObraLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(pnlCadastroObraLayout.createSequentialGroup()
                        .addGap(6, 6, 6)
                        .addComponent(camposObrigatoriosLivro, javax.swing.GroupLayout.DEFAULT_SIZE, 15, Short.MAX_VALUE))
                    .addGroup(pnlCadastroObraLayout.createSequentialGroup()
                        .addGap(6, 6, 6)
                        .addComponent(codigo, javax.swing.GroupLayout.DEFAULT_SIZE, 15, Short.MAX_VALUE))
                    .addComponent(codLivro, javax.swing.GroupLayout.DEFAULT_SIZE, 21, Short.MAX_VALUE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(pnlCadastroObraLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(pnlCadastroObraLayout.createSequentialGroup()
                        .addComponent(pnlDadosObra, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                        .addGap(48, 48, 48)
                        .addComponent(jCheckBoxGravarVariosExemplaresLivro, javax.swing.GroupLayout.DEFAULT_SIZE, 24, Short.MAX_VALUE)
                        .addGap(27, 27, 27)
                        .addComponent(jCheckBoxNaoDisponibilizarEmprestimoLivro, javax.swing.GroupLayout.DEFAULT_SIZE, 25, Short.MAX_VALUE)
                        .addGap(92, 92, 92))
                    .addGroup(pnlCadastroObraLayout.createSequentialGroup()
                        .addComponent(pnlInformacoesGerais, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addComponent(pnlAutor, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                        .addGroup(pnlCadastroObraLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                            .addComponent(btnSair, javax.swing.GroupLayout.PREFERRED_SIZE, 28, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(btnSalvar, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(btnLimpar, javax.swing.GroupLayout.PREFERRED_SIZE, 31, javax.swing.GroupLayout.PREFERRED_SIZE))))
                .addContainerGap())
        );

        MenuCadastroLivro.setIcon(new javax.swing.ImageIcon(getClass().getResource("/br/com/Recursos/Cópia de icone-livro.png"))); // NOI18N
        MenuCadastroLivro.setText("Cadastro de Livro");
        MenuCadastroLivro.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
        MenuCadastroLivro.setEnabled(false);
        MenuCadastroLivro.setFont(new java.awt.Font("Tahoma", 1, 12));
        MenuCadastroLivro.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
        MenuCadastroLivro.setVerticalAlignment(javax.swing.SwingConstants.BOTTOM);
        MenuCadastroLivro.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
        MenuLivro.add(MenuCadastroLivro);

        setJMenuBar(MenuLivro);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(pnlDesign, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
            .addGroup(layout.createSequentialGroup()
                .addGap(10, 10, 10)
                .addComponent(pnlCadastroObra, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addGap(10, 10, 10))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addComponent(pnlDesign, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(pnlCadastroObra, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addContainerGap())
        );

        pack();
        java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
        java.awt.Dimension dialogSize = getSize();
        setLocation((screenSize.width-dialogSize.width)/2,(screenSize.height-dialogSize.height)/2);
    }// </editor-fold>

    private void codLivroActionPerformed(java.awt.event.ActionEvent evt) {                                         
// TODO add your handling code here:
    }                                        

    private void nudataCadastroActionPerformed(java.awt.event.ActionEvent evt) {                                               
// TODO add your handling code here:
    }                                              

    private void nuVolumeActionPerformed(java.awt.event.ActionEvent evt) {                                         
// TODO add your handling code here:
    }                                        

    private void btnAdicionarAutorActionPerformed(java.awt.event.ActionEvent evt) {                                                  
// TODO add your handling code here:}                                                 
    }
        private void btnSalvarActionPerformed(java.awt.event.ActionEvent evt) {                                          
            // TODO add your handling code here:
            try {
                cadastrarLivro();
            } catch (Exception e) {
                JOptionPane.showMessageDialog(null, "Erro ao cadastrar! Causa: " + e);
            }
    }                                         

    private void btnSairActionPerformed(java.awt.event.ActionEvent evt) {                                        
        // TODO add your handling code here:
        Object[] options = {"Sim", "Não"};
        int i = JOptionPane.showOptionDialog(null,
                "Tem certeza que deseja cancelar o cadastro?", "Saída",
                JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, null,
                options, options[1]);
        if (i == JOptionPane.YES_OPTION) {
            System.exit(0);
        }
    }                                       

    private void btnLimparActionPerformed(java.awt.event.ActionEvent evt) {                                          
        // TODO add your handling code here:
        limparCamposLivro();
    }                                         

    private void cmdSelecionarAutorActionPerformed(java.awt.event.ActionEvent evt) {                                                   
        // TODO add your handling code here:
    }                                                  

    private void cmdSelecionarAutorFocusGained(java.awt.event.FocusEvent evt) {                                               
        // TODO add your handling code here:
        cmdSelecionarAutor.addItemListener(new ItemListener() {

            @Override
            public void itemStateChanged(ItemEvent e) {
                JComboBox comboboxAutor = (JComboBox) e.getSource();
                cmdSelecionarAutor.getModel().getSelectedItem();
                jTbAutor.getModel().addTableModelListener(jTbAutor);
            }
        });
    }                                              

    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {

        /*
         * Set the Nimbus look and feel
         */
        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
        /*
         * If Nimbus (introduced in Java SE 6) is not available, stay with the
         * default look and feel. For details see
         * http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
         */
        try {
            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                if ("Nimbus".equals(info.getName())) {
                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (ClassNotFoundException ex) {
            java.util.logging.Logger.getLogger(CadastrarLivro.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(CadastrarLivro.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(CadastrarLivro.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(CadastrarLivro.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }
        //</editor-fold>

        /*
         * Create and display the form
         */
        java.awt.EventQueue.invokeLater(new Runnable() {

            @Override
            public void run() {
                new CadastrarLivro().setVisible(true);
            }
        });
    }
    // Variables declaration - do not modify
    private javax.swing.JLabel Autor;
    private javax.swing.JMenu MenuCadastroLivro;
    private javax.swing.JMenuBar MenuLivro;
    private javax.swing.JLabel anoEdicao;
    private javax.swing.JButton btnAdicionarAutor;
    private javax.swing.JButton btnExcluirAutor;
    private javax.swing.JButton btnLimpar;
    private javax.swing.JButton btnSair;
    private javax.swing.JButton btnSalvar;
    private javax.swing.JLabel campoObrigatorio1;
    private javax.swing.JLabel campoObrigatorio10;
    private javax.swing.JLabel campoObrigatorio11;
    private javax.swing.JLabel campoObrigatorio12;
    private javax.swing.JLabel campoObrigatorio13;
    private javax.swing.JLabel campoObrigatorio14;
    private javax.swing.JLabel campoObrigatorio3;
    private javax.swing.JLabel campoObrigatorio4;
    private javax.swing.JLabel campoObrigatorio7;
    private javax.swing.JLabel campoObrigatorio8;
    private javax.swing.JLabel camposObrigatoriosLivro;
    private javax.swing.JComboBox cmdSelecionarAutor;
    private javax.swing.JComboBox cmdSelecionarEditora;
    private javax.swing.JComboBox cmdSelecionarSecao;
    private javax.swing.JTextField codLivro;
    private javax.swing.JLabel codigo;
    private javax.swing.JLabel dataCadastro;
    private javax.swing.JLabel edicao;
    private javax.swing.JLabel editora;
    private javax.swing.JLabel isbn;
    private javax.swing.JCheckBox jCheckBoxGravarVariosExemplaresLivro;
    private javax.swing.JCheckBox jCheckBoxNaoDisponibilizarEmprestimoLivro;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JTable jTbAutor;
    private javax.swing.JTextField nuAnoEdicao;
    private javax.swing.JTextField nuEdicao;
    private javax.swing.JTextField nuExemplare;
    private javax.swing.JTextField nuISBN;
    private javax.swing.JTextField nuReferencia;
    private javax.swing.JTextField nuVolume;
    private javax.swing.JFormattedTextField nudataCadastro;
    private javax.swing.JLabel numeroExemplar;
    private javax.swing.JLabel observacao;
    private javax.swing.JPanel pnlAutor;
    private javax.swing.JPanel pnlCadastroObra;
    private javax.swing.JPanel pnlDadosObra;
    private javax.swing.JPanel pnlDesign;
    private javax.swing.JPanel pnlInformacoesGerais;
    private javax.swing.JLabel referencia;
    private javax.swing.JLabel secao;
    private javax.swing.JLabel tituloObra;
    private javax.swing.JTextField txObservacao;
    private javax.swing.JTextField txtituloObra;
    private javax.swing.JLabel volume;
    // End of variables declaration
    private Livro NovoLivro;
    List<Editora> editoras;
    List<Secao> secoes;
    // List<Autor> autores;
    TableModelAutor TmAutor;
    short disp = 0;
    short indisp = 1;

    /**Método para preencher todos os valores nos componentes do formulário.
     * @param livro
     * @return  
     */
    public Livro preencherCamposLivro(Livro livro) {
        livro.setTxTitulo(txtituloObra.getText());
        livro.setNuReferencia(Integer.valueOf(nuReferencia.getText()));
        livro.setNuEdicao(Integer.valueOf(nuEdicao.getText()));
        livro.setNuAnoEdicao(Integer.valueOf(nuAnoEdicao.getText()));
        livro.setNuExemplar(Integer.valueOf(nuExemplare.getText()));
        livro.setTxObservacao(txObservacao.getText());
        /*Formatar campo para receber data.*/
        SimpleDateFormat formatoLocal = new SimpleDateFormat("dd/MM/yyyy");
        try {
            livro.setDaCadastro(formatoLocal.parse(nudataCadastro.getText()));
        } catch (ParseException ex) {
            Logger.getLogger(CadastrarAluno.class.getName()).log(Level.SEVERE, null, ex);
        }

        livro.setCodEditora(null);
        livro.setCodSecao(null);
        livro.setAutor(null);

        livro.setNuVolume(Integer.valueOf(nuVolume.getText()));
        livro.setNuISBN(Integer.valueOf(nuISBN.getText()));

        return livro;
    }

    /**Método para gravar exemplares de uma obra.
     * @param exemplar
     */
    public void gravarExemplar(Exemplar exemplar) {
        for (int i = 0; i < Integer.valueOf(nuExemplare.getText()); i++) {
            exemplar.getCodItemBiblioteca();
            exemplar.setInEmprestimo(disp);
            exemplar.setInConsulta(disp);
            if (jCheckBoxNaoDisponibilizarEmprestimoLivro.isSelected() | i == 0) {
                exemplar.setInConsulta(indisp);
            }
        }
        ExemplarDAO.fabricaExemplarDAO().salvar(new Exemplar());
    }

    private void popularComboboxEditora() {
        Session sessao = HibernateUtil.getSessionFactory().openSession();
        editoras = sessao.createQuery("FROM Editora").list();
        if (editoras.isEmpty()) {
            JOptionPane.showMessageDialog(null, "Nenhum registro de Editora foi encontrado.");
        } else {
            cmdSelecionarEditora.removeAllItems();
            for (int i = 0; i < editoras.size(); i++) {
                cmdSelecionarEditora.addItem(editoras.get(i).getNoEditora());
            }

        }
        sessao.close();
    }

    private void popularComboboxSecao() {
        Session sessao = HibernateUtil.getSessionFactory().openSession();
        secoes = sessao.createQuery("FROM Secao").list();
        if (secoes.isEmpty()) {
            JOptionPane.showMessageDialog(null, "Nenhum registro de Seção foi encontrado.");
        } else {
            cmdSelecionarSecao.removeAllItems();
            for (int i = 0; i < secoes.size(); i++) {
                cmdSelecionarSecao.addItem(secoes.get(i).getNoSecao());
            }
        }
        sessao.close();
    }

    private void popularComboboxAutor() {

        try {
            cmdSelecionarAutor.removeAllItems();
            List<Autor> entidadeAutores = AutorDAO.recuperarListaDeAutores();

            if (entidadeAutores.isEmpty()) {
                JOptionPane.showMessageDialog(null, "Nenhum autor foi encontrado.");
            } else {
                for (Autor entidadeAutor : entidadeAutores) {
                    cmdSelecionarAutor.addItem(entidadeAutor);
                }
            }
        } catch (HibernateException hibernateException) {
            //JOptionPane.showMessageDialog(String.format("%s - %s", "Erro no banco de dados!", hibernateException.getMessage()));
        }

    }

    public void cadastrarLivro() {
        if (txtituloObra.getText() == null || nuExemplare.getText() == null
                || cmdSelecionarSecao.getSelectedItem() == null || nudataCadastro.getText() == null
                || cmdSelecionarEditora.getSelectedItem() == null
                || nuReferencia.getText() == null || nuVolume.getText() == null
                || nuAnoEdicao.getText() == null || nuISBN.getText() == null) {
            JOptionPane.showMessageDialog(null, "Há campo(s) obrigatório(s) vazio(s)!");
        } else {
            LivroDAO.fabricaLivroDAO().salvar(preencherCamposLivro(new Livro()));
            limparCamposLivro();
            JOptionPane.showMessageDialog(null, "Livro inserido com sucesso!");
            mostrarDataAtualCadastro();
        }
    }

    /**Mostra a data e hora atual do computador.*/
    private void mostrarDataAtualCadastro() {
        String data = (new java.text.SimpleDateFormat("dd/MM/yyyy").format(new java.util.Date(System.currentTimeMillis())));
        nudataCadastro.setText(data);
    }

    private void limparCamposLivro() {
        for (int i = 0; i < pnlCadastroObra.getComponentCount(); i++) {
            if (pnlCadastroObra.getComponent(i) instanceof JTextField) {
                ((JTextField) pnlCadastroObra.getComponent(i)).setText("");
            }
        }
        for (int i = 0; i < pnlDadosObra.getComponentCount(); i++) {
            if (pnlDadosObra.getComponent(i) instanceof JTextField) {
                ((JTextField) pnlDadosObra.getComponent(i)).setText("");
            }
        }
        for (int i = 0; i < pnlInformacoesGerais.getComponentCount(); i++) {
            if (pnlInformacoesGerais.getComponent(i) instanceof JTextField) {
                ((JTextField) pnlInformacoesGerais.getComponent(i)).setText("");
            }
        }
        for (int i = 0; i < pnlAutor.getComponentCount(); i++) {
            if (pnlAutor.getComponent(i) instanceof JTextField) {
                ((JTextField) pnlAutor.getComponent(i)).setText("");
            }
        }

        cmdSelecionarAutor.setSelectedIndex(-1);
        cmdSelecionarEditora.setSelectedIndex(-1);
        cmdSelecionarSecao.setSelectedIndex(-1);
        mostrarDataAtualCadastro();

    }
}
E minha classe AutorDAO:
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.Persistencia;

import br.com.Dominio.Autor;
import java.util.List;
import org.hibernate.HibernateException;
import org.hibernate.Session;

/**
 *
 * @author Jackeline
 */
public class AutorDAO extends GenericHibernateDAO<Autor, Integer> {

    public static AutorDAO fabricaAutorDAO() {
        return new AutorDAO();
    }

    public static List<Autor> recuperarListaDeAutores() throws HibernateException {

        Session sessao = HibernateUtil.getSessionFactory().openSession();
        return sessao.createQuery("FROM Autor").list();
    }
}

Até.

J

Oi.

Tem como transformar br.com.Dominio.Autor[codAutor=1] em algo que seja entendido pelo usuario?

No método de popular o combobox do autor:
private void popularComboboxAutor() {

        try {
            cmdSelecionarAutor.removeAllItems();
            List<Autor> entidadeAutores = AutorDAO.recuperarListaDeAutores();

            if (entidadeAutores.isEmpty()) {
                JOptionPane.showMessageDialog(null, "Nenhum autor foi encontrado.");
            } else {
                for (Autor entidadeAutor : entidadeAutores) {
                    cmdSelecionarAutor.setModel(new DefaultComboBoxModel(entidadeAutores.toArray()));
                }
            }
        } catch (HibernateException hibernateException) {
            JOptionPane.showMessageDialog(String.format("%s - %s", "Erro no banco de dados!", hibernateException.getMessage()));
        }

    }
Dá erro aqui:
JOptionPane.showMessageDialog(String.format("%s - %s", "Erro no banco de dados!", hibernateException.getMessage()));
Diz que [color=blue]no suitable method found for showMessageDialog(java.lang.String) method javax.swing.JOptionPane.showMessageDialog(java.awt.Component,java.lang.Object,java.lang.String,int,javax.swing.Icon) is not applicable (actual and formal argument lists differ in length) method javax.swing.JOptionPane.showMessageDialog(java.awt.Component,java.lang.Object,java.lang.String,int) is not applicable (actual and formal argument lists differ in length) method javax.swing.JOptionPane.showMessageDialog(java.awt.Component,java.lang.Object) is not applicable (actual and formal argument lists differ in length)[/color]

Até.

N

Jackye:
Oi.

Tem como transformar br.com.Dominio.Autor[codAutor=1] em algo que seja entendido pelo usuario?


Sim, sobrescreva o método toString() da sua classe Autor. O que você retornar é o que será exibido.

[quote=Jackye]
Dá erro aqui:

Faltou o primeiro parâmetro do método showMessageDialog.
Mude o código para:

catch (HibernateException hibernateException) { JOptionPane.showMessageDialog(null, String.format("%s - %s", "Erro no banco de dados!", hibernateException.getMessage())); }

Espero ter ajudado,
fique com Deus! :smiley:

J

Oi.

Já modifiquei lá na classe Autor o ToString.

Agora, ainda não tô conseguindo inserir o autor selecionado na tabela. Devo inserir um laço for aqui:
private void cmdSelecionarAutorFocusGained(java.awt.event.FocusEvent evt) {                                               
        // TODO add your handling code here:
        cmdSelecionarAutor.addItemListener(new ItemListener() {

            @Override
            public void itemStateChanged(ItemEvent e) {
                JComboBox comboboxAutor = (JComboBox) e.getSource();
                cmdSelecionarAutor.getModel().getSelectedItem();
                jTbAutor.getModel().addTableModelListener(jTbAutor);
//Inserir o laço for aqui.
            }
        });
    }
Ou tenho que fazer outro método na classe AutorDAO para isso? Até.

[color=violet]Ps.: Obrigado por estar me ajudando[/color] :thumbup:

J

Uma questão:

Popular o combobox para que ele receba objeto do tipo classe de entidade fica até mais fácil de criar uma coleção?

Por exemplo, obra cria uma coleção de autores e essas coleções recebem atributo do tipo autor, não é?
Ou estou errada?

:lol:

N
Jackye:
Oi.

Já modifiquei lá na classe Autor o ToString.

Agora, ainda não tô conseguindo inserir o autor selecionado na tabela. Devo inserir um laço for aqui:
private void cmdSelecionarAutorFocusGained(java.awt.event.FocusEvent evt) {                                               
        // TODO add your handling code here:
        cmdSelecionarAutor.addItemListener(new ItemListener() {

            @Override
            public void itemStateChanged(ItemEvent e) {
                JComboBox comboboxAutor = (JComboBox) e.getSource();
                cmdSelecionarAutor.getModel().getSelectedItem();
                jTbAutor.getModel().addTableModelListener(jTbAutor);
//Inserir o laço for aqui.
            }
        });
    }
Ou tenho que fazer outro método na classe AutorDAO para isso? Até.

[color=violet]Ps.: Obrigado por estar me ajudando[/color] :thumbup:

Crie no seu TableModel um método adicionarAutor, onde você recebe um objeto do tipo Autor como parâmetro e adiciona na tabela.
public void adicionarAutor(Autor entidadeAutor) {

    this.autores.add(entidadeAutor);
    fireTableRowsInserted(autores.size(), autores.size());
}
E, no seu evento da JComboBox:
private void cmdSelecionarAutorFocusGained(java.awt.event.FocusEvent evt) {                                               
        // TODO add your handling code here:
        cmdSelecionarAutor.addItemListener(new ItemListener() {

            @Override public void itemStateChanged(ItemEvent e) {
                Autor entidadeAutor = (Autor) ((JComboBox) e.getSource()).getSelectedItem();
                tablemodelAutores.adicionarAutor(entidadeAutor);
            }
       }
}
Jackye:
Uma questão:

Popular o combobox para que ele receba objeto do tipo classe de entidade fica até mais fácil de criar uma coleção?

Por exemplo, obra cria uma coleção de autores e essas coleções recebem atributo do tipo autor, não é?
Ou estou errada?


Não entendi sua dúvida. '-'

Espero ter ajudado,
fique com Deus! :D

J

Oi.

Ainda não tô conseguindo inserir o autor na Table. :(

Já coloque no TableModel o metodo de adiconar o autor:
public void adicionarAutor(Autor entidadeAutor) {
        this.autores.add(entidadeAutor);
        fireTableRowsInserted(autores.size(), autores.size());
    }
Olha só lá no início do formulário:
public class CadastrarLivro extends javax.swing.JFrame {

//Inicio a variavel tablemodel aqui:
     private TableModelAutor tabelaModelAutor;

    /**
     * Creates new form CadastroLivro
     */
    public CadastrarLivro() {
//Este list ainda precisa estar aqui?
        List<Autor> entidadeAutores = AutorDAO.recuperarListaDeAutores();
//Dou um valor para a variavel criada inicialmente aqui
        tabelaModelAutor = new TableModelAutor(entidadeAutores);

        initComponents();
//chamo o metodo pra preencher o combo assim que o formulario for carregado.
        popularComboboxAutor();

        cmdSelecionarAutor.setSelectedIndex(-1);
    }
Meu método popularComboboxAutor está assim, conforme me ajudou:
private void popularComboboxAutor() {

        try {
            cmdSelecionarAutor.removeAllItems();
            List<Autor> entidadeAutores = AutorDAO.recuperarListaDeAutores();

            if (entidadeAutores.isEmpty()) {
                JOptionPane.showMessageDialog(null, "Nenhum autor foi encontrado.");
            } else {
                for (Autor entidadeAutor : entidadeAutores) {
                    cmdSelecionarAutor.setModel(new DefaultComboBoxModel(entidadeAutores.toArray()));
                }
            }
        } catch (Exception generalException) {
            JOptionPane.showMessageDialog(null, String.format("%s - %s", "Erro geral!", generalException.getMessage()));
        }
    }
E lá no AutorDAO tenho o método recuperarListaDeAutores():
public static List<Autor> recuperarListaDeAutores() throws HibernateException {

        Session sessao = HibernateUtil.getSessionFactory().openSession();
        return sessao.createQuery("FROM Autor").list();
    }
A proposito, eu não deveria fechar essa sessao? E por fim, no evento do combobox:
cmdSelecionarAutor.addItemListener(new ItemListener() {

            @Override
            public void itemStateChanged(ItemEvent e) {
                Autor entidadeAutor = (Autor) ((JComboBox) e.getSource()).getSelectedItem();
                tabelaModelAutor.adicionarAutor(entidadeAutor);            
            }
        });
Quando escolho o autor no combobox nada acontece, o esperado era ele ser adicionado na tabela.
Criado 29 de fevereiro de 2012
Ultima resposta 6 de mar. de 2012
Respostas 26
Participantes 4