Olá, eu tava tentando resolver, mas não consegui ainda.
Segue algumas imagens em anexo para voce ter uma melhor idéia do problema.
Na tela1 um eu cliquo no botão “buscar” e a jtable é criada e é preenchida com os dados de uma tabela.
Na tela2 eu seleciono uma linha da jtable e a JList é preenchida com os dados de uma subtabela relacionada com a tabela1;
Na tela3 eu seleciono outra linha da jtable e então a jList é preenchida com novos itens, até aí tudo bem, posso ficar alternando entre as linhas que a jlist é repreenchida corretamente. O problema começa a partir da próxima tela.
Na tela4 observe que tem um item selecionado na jlist, então quando tento selecionar outra linha na jtable ocorre a exceção da tela 5,e após isto se eu continuo a selecionar outras linhas na jtable então a jlist volta a ser preenchida corretamente outra vez,ou seja o problema só ocorre quando há um item selecionado na jtable.
Será que agora conseguí deixr claro o problema que estou tendo?
segue o método que ppreenche a jlist e o método que trata a seleção da jtable e que chama a o método que praenche a jlist.
Se voce puder me ajudar fico muito grato, pois isto tá me deixando louco.
private void inserirItensDaComposicaoNaLista() {
String sql = "SELECT * FROM detcomposicoes WHERE codCompos="
+ tcodigo.getText();
listaItensComposicao=null;
if(listModel!=null){
listModel.clear();
listaItensDaCompos.setModel(listModel);
painel.repaint();
}
try {
rs = compoDao.buscaComposicao(sql);
listaItensComposicao = new ArrayList<Itens>();
ResultSet rsi = null;
while (rs.next()) {
rsi = itemDao
.buscaItem("SELECT codItem,descricao FROM itens WHERE codItem="
+ rs.getInt("codItem"));
while (rsi.next()) {
Itens item = new Itens();
item.setCodigo(rsi.getInt("codItem"));
item.setDescricao(rsi.getString("descricao"));
listaItensComposicao.add(item);
}
rsi.close();
}
try {
rs.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (NenhumRegistroEncontradoException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (DataAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
for (int i = 0; i < listaItensComposicao.size(); i++) {
listModel.addElement(listaItensComposicao.get(i).getCodigo() + "-"
+ listaItensComposicao.get(i).getDescricao());
}
listaItensDaCompos.setModel(listModel);
}
public void actionPerformed(ActionEvent e) {
.
.
.Tratamento dos eventos disparados pelos demais botões
} else if (e.getActionCommand().equals(“busca”)) {
acaoBuscar();
painel.add(jscrollItens);
itens.setVisible(true);
tableModelCompo = new ResultSetTableModel(rs);
tableCompo = new JTable(tableModelCompo);
tableCompo.getTableHeader().getColumnModel().getColumn(0)
.setMaxWidth(50);
tableCompo.getTableHeader().getColumnModel().getColumn(1)
.setMaxWidth(120);
tableCompo.getTableHeader().getColumnModel().getColumn(2)
.setMaxWidth(50);
tableCompo.getTableHeader().getColumnModel().getColumn(3)
.setMaxWidth(50);
tableCompo.getTableHeader().getColumnModel().getColumn(4)
.setMaxWidth(80);
tableCompo.getTableHeader().getColumnModel().getColumn(5)
.setMaxWidth(80);
tableCompo.getTableHeader().getColumnModel().getColumn(6)
.setMaxWidth(100);
tableCompo.getTableHeader().getColumnModel().getColumn(7)
.setMaxWidth(250);
tableCompo.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
try {
rs.close();
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
// inicio do tratamento do evento de mouse quando é clicado
// em uma linha da Jtable, preenche os campos com o item selecionado
tableCompo.addMouseListener(new MouseAdapter() {
tableCompo.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
if (e.getClickCount() == 1) {
// apaga os valores anteriores dos campos
tcodigo.setText("");
tcodEquipto.setText("");
tcodSerie.setText("");
tdataini.setText("");
tdatafim.setText("");
tresp.setText("");
tTipo.setText("");
tObs.setText("");
// preenche os campos com os novos valores selecionados
// na Jtable
tcodigo.setText((tableCompo.getValueAt(tableCompo
.getSelectedRow(), 0)).toString());
tTipo.setText((tableCompo.getValueAt(tableCompo
.getSelectedRow(), 1)).toString());
tcodEquipto.setText((tableCompo.getValueAt(tableCompo
.getSelectedRow(), 2)).toString());
tcodSerie.setText((tableCompo.getValueAt(tableCompo
.getSelectedRow(), 3)).toString());
tdataini.setText((tableCompo.getValueAt(tableCompo
.getSelectedRow(), 4)).toString());
tdatafim.setText((tableCompo.getValueAt(tableCompo
.getSelectedRow(), 5)) == null ? ""
: (tableCompo.getValueAt(tableCompo
.getSelectedRow(), 5)).toString());
tresp.setText((tableCompo.getValueAt(tableCompo
.getSelectedRow(), 6)).toString());
tObs.setText((tableCompo.getValueAt(tableCompo
.getSelectedRow(), 7)) == null ? ""
: (tableCompo.getValueAt(tableCompo
.getSelectedRow(), 7)).toString());
}
inserirItensDaComposicaoNaLista();
}
});// fim da classe interna MouseAdapter