Olá pessoal,
Tenho um código de exemplo que copiei no site do java sobre o uso dinâmico do JList. Nesse exemplo, é possível adicionar e remover itens na lista dinâmicamente. Agora eu quero implementar essa solução usando um banco de dados, ou seja, não quero que o item/registro seja incluído só na JList, também quero inserir o registro no banco de dados. Excluir e incluir o registro no banco de dados é tranquilo assim como exibir a lista na primeira vez que o programa é executado, minha maior dificuldade está em recuperar essas informações do banco de dados para serem exibidas no JList após uma inclusão ou uma exclusão de um item/registro.
Abaixo tenho as duas classes do arquivo de exemplo, uma classe para adicionar e outra para remover um ítem da lista. Não consegui entender a lógica de como o JList atualiza a lista dinamicamente, para que no local onde essa atualização ocorre, colocar os comandos que carregam os registros diretamente do banco de dados. Alguém poderia me dar uma ajuda com essa lógica?
Grato,
Sérgio
Remover ITEM/Registro:
class FireListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
int index = list.getSelectedIndex();
if (list.getSelectedIndex() == -1) {
JOptionPane.showMessageDialog(null,"Você precisa selecionar uma pasta para excluir!");
}
else {
listModel.remove(index);
int size = listModel.getSize();
if (size == 0) {
fireButton.setEnabled(false);
} else {
if (index == listModel.getSize()) {
index--;
}
list.setSelectedIndex(index);
list.ensureIndexIsVisible(index);
}
}
}
}
Inserir ITEM/Registro:
class HireListener implements ActionListener, DocumentListener {
private boolean alreadyEnabled = false;
private JButton button;
public HireListener(JButton button) {
this.button = button;
}
public void actionPerformed(ActionEvent e) {
String name = employeeName.getText();
if (name.equals("") || alreadyInList(name)) {
Toolkit.getDefaultToolkit().beep();
employeeName.requestFocusInWindow();
employeeName.selectAll();
return;
}
int index = list.getSelectedIndex();
if (index == -1) {
index = 0;
} else {
index++;
}
listModel.insertElementAt(employeeName.getText(), index);
employeeName.requestFocusInWindow();
employeeName.setText("");
list.setSelectedIndex(index);
list.ensureIndexIsVisible(index);
}
protected boolean alreadyInList(String name) {
return listModel.contains(name);
}
public void insertUpdate(DocumentEvent e) {
enableButton();
}
public void removeUpdate(DocumentEvent e) {
handleEmptyTextField(e);
}
public void changedUpdate(DocumentEvent e) {
if (!handleEmptyTextField(e)) {
enableButton();
}
}
private void enableButton() {
if (!alreadyEnabled) {
button.setEnabled(true);
}
}
private boolean handleEmptyTextField(DocumentEvent e) {
if (e.getDocument().getLength() <= 0) {
button.setEnabled(false);
alreadyEnabled = false;
return true;
}
return false;
}
}