Olá pessoal,
Estou com um problema na hora de atualizar o meu componente JList. Eu preciso criar um novo registro no meu banco de dados e depois carregar o JList com o novo registro. A primeira exibição do conteúdo da tabela no JList e a inclusão de um novo registro funciona, mas no momento de recarregar a JList com o novo registro que eu incluí, nada acontece. Não achei nada que pudesse justificar esse comportamento. Anexei abaixo o código e retirei algumas linhas para torná-lo o menor possível. Um detalhe é que o novo registro é digitado em um segundo form, mas como a gravação no banco de dados é feita no form de origem não acredito que isso tenha alguma influência sobre o resultado.
Grato,
Sérgio
public class UI_Pasta_ComJlist extends JFrame {
private static final long serialVersionUID = 1L;
private JPanel jContentPane = null;
private JScrollPane scrollPane_NomeDaLista = null;
private JList list_ListaPastaDoPerfilDoUsuario = null;
private JToolBar toolBar_BarraDeIcones = null;
private JButton btn_NovaLista = null;
CriaPasta dCriaListaDoCatalogoDeContatos;
JFrame frame;
public UI_Pasta_ComJlist() {
super();
PreencherJListDePastaDeContatos();
initialize();
}
private JScrollPane getJScrollPane_NomeDaLista() {
if (scrollPane_NomeDaLista == null) {
scrollPane_NomeDaLista = new JScrollPane();
scrollPane_NomeDaLista.setBounds(new Rectangle(0, 40, 200, 501));
scrollPane_NomeDaLista.setViewportView(getJList_ListaPastaDoPerfilDoUsuario());
}
return scrollPane_NomeDaLista;
}
JList getJList_ListaPastaDoPerfilDoUsuario() {
if (list_ListaPastaDoPerfilDoUsuario == null) {
list_ListaPastaDoPerfilDoUsuario = new JList();
}
return list_ListaPastaDoPerfilDoUsuario;
}
private JToolBar getJToolBar_BarraDeIcones() {
if (toolBar_BarraDeIcones == null) {
toolBar_BarraDeIcones = new JToolBar();
toolBar_BarraDeIcones.setSize(new Dimension(201, 40));
toolBar_BarraDeIcones.setLocation(new Point(0, 0));
toolBar_BarraDeIcones.setFloatable(true);
toolBar_BarraDeIcones.setPreferredSize(new Dimension(1000, 40));
toolBar_BarraDeIcones.setToolTipText("Barra de Icones");
toolBar_BarraDeIcones.setName("Barra de Icones");
toolBar_BarraDeIcones.add(getJButton_NovaLista());
}
return toolBar_BarraDeIcones;
}
private JButton getJButton_NovaLista() {
if (btn_NovaLista == null) {
btn_NovaLista = new JButton();
btn_NovaLista.setFont(new Font("Dialog", Font.BOLD, 11));
btn_NovaLista.setIcon(new ImageIcon("D:/CursoDeJava/Imagens/CatalogoEndereco/AdicionarLista.png"));
btn_NovaLista.setText(" Nova Lista ");
btn_NovaLista.setSize(new Dimension(120, 40));
btn_NovaLista.setToolTipText("Criar uma nova pasta");
btn_NovaLista.setLocation(new Point(16, 0));
btn_NovaLista.setPreferredSize(new Dimension(85, 30));
btn_NovaLista.setBorder(BorderFactory.createCompoundBorder(null, null));
btn_NovaLista.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
dCriaListaDoCatalogoDeContatos.setLocationRelativeTo(frame);
dCriaListaDoCatalogoDeContatos.setVisible(true);
}
});
}
return btn_NovaLista;
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
UI_CatalogoDeContatos_ComJlist thisClass = new UI_CatalogoDeContatos_ComJlist(1);
thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
thisClass.setVisible(true);
}
});
}
private void initialize() {
this.setSize(1005, 590);
this.setDefaultCloseOperation(WindowConstants.HIDE_ON_CLOSE);
this.setResizable(false);
this.setLocation(new Point(300, 100));
this.setContentPane(getJContentPane());
this.setTitle("Catálogo de Contatos");
this.setLocationRelativeTo(null);
this.setVisible(true);
dCriaListaDoCatalogoDeContatos = new CriaPasta(1,frame, this);
dCriaListaDoCatalogoDeContatos.pack();
}
private JPanel getJContentPane() {
if (jContentPane == null) {
jContentPane = new JPanel();
jContentPane.setLayout(null);
jContentPane.setSize(1000,600);
jContentPane.add(getJScrollPane_NomeDaLista(), null);
jContentPane.add(getJToolBar_BarraDeIcones(), null);
}
return jContentPane;
}
@SuppressWarnings("unchecked")
void PreencherJListDePastaDeContatos() {
final DefaultListModel DLM_PastaDoPerfilUsuario = new DefaultListModel();
list_ListaPastaDoPerfilDoUsuario = new JList(DLM_PastaDoPerfilUsuario);
try {
PastaDeContatos ObjetoPastaDeContatos = new PastaDeContatos();
DAO ObjetoDAOPastaDeContatos = new DAO(ObjetoPastaDeContatos);
List<PastaDeContatos> ListarPastaDeContatos = new ArrayList<PastaDeContatos>();
String ComandoSQL = " where CodigoPerfilUsuario=1 order by Codigo";
ListarPastaDeContatos = ObjetoDAOPastaDeContatos.ExibirRegistro("PastaDeContatos"+ComandoSQL);
int TamanhoDaListaPastaDeContatos = ListarPastaDeContatos.size();
JOptionPane.showMessageDialog(null,"O tamanho da Lista é: "+TamanhoDaListaPastaDeContatos);
for(int i=0;i<TamanhoDaListaPastaDeContatos;i++) {
ObjetoPastaDeContatos = ListarPastaDeContatos.get(i);
((DefaultListModel) list_ListaPastaDoPerfilDoUsuario.getModel()).addElement(ObjetoPastaDeContatos.getDescricaoPasta());
}
}
catch(Exception ErroPerfilUsuario) {
JOptionPane.showMessageDialog(null,"Erro ao Exibir a Pasta do Perfil do Usuário! - "+ErroPerfilUsuario);
}
}
/** Configura o texto que será exibido no radape da tela. */
void RecebeNomeDaPasta(String NovaPasta) {
try {
PastaDeContatos ObjetoPastaDeContatos = new PastaDeContatos();
ObjetoPastaDeContatos.setCodigoPerfilUsuario(1);
ObjetoPastaDeContatos.setDescricaoPasta(NovaPasta);
DAO><PastaDeContatos> ObjetoDAOPerfilDeUsuario = new DAO<PastaDeContatos>(ObjetoPastaDeContatos);
ObjetoDAOPerfilDeUsuario.InsereRegistro();
}
catch(Exception ErroPerfilUsuario) {
JOptionPane.showMessageDialog(null,"Erro ao INCLUIR uma nova Pasta de Contatos! - "+ErroPerfilUsuario);
}
PreencherJListDePastaDeContatos();
}
}