Boa noite Lucas.
Possívelmente o erro está nesta linha aqui.
.....
tblCliente p = (tblCliente)ComboBoxCliente.getSelectedItem();
....
Isto porque o erro reportado é um erro de casting ou seja, voce está tentando converter um tipo de classe para um tipo que não está na sua linha hierárquica de herança e dai o erro abaixo:
Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: java.lang.String cannot be cast to CLASSES.tblCliente
at TELAS.COMPR$3.actionPerformed(COMPR.java:230)
Trocando em miúdos, o método "getSelectedItem() do ComboBox, não retorna um objeto do tipo tblCliente e sim deve retornar um tipo de objeto String, dai o erro de casting, se você fizesse assim:
.....
String p = (String)ComboBoxCliente.getSelectedItem();
....
Talvez o erro não dispararia, porém não sei se resolveria o seu caso. Digo isto porque o melhor que você tenha a fazer, em se tratando de preencher uma lista de um ComboBox, com dados do banco, é criar uma classe que implementa “ComboBoxModel”, vamos a um exemplo:
import java.sql.Connection;
import java.sql.Driver;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import javax.swing.ComboBoxModel;
import javax.swing.event.ListDataListener;
public class DBComboModel implements ComboBoxModel {
private ArrayList<String> data = null;
private String selected_item = null;
private int index;
public DBComboModel(String column, String sql){
try {
data = new ArrayList<String>();
//Esse select deve trazer apenas uma coluna para facilitar.(coluna q vai no Combobox)
Class driver = Class.forName("org.postgresql.Driver");
String banco = "jdbc:postgresql://localhost:5432/AGENDA";
DriverManager.registerDriver((Driver)driver.newInstance());
Connection conn = DriverManager.getConnection(banco,"postgres","masterkey");
conn.setAutoCommit(true);
PreparedStatement stm = conn.prepareStatement(sql);
ResultSet rs = stm.executeQuery();
data.add("...");
while(rs.next()){
data.add(rs.getString(column)); //adiciona no arraylist todos os itens selecionados
}
//tenta selecionar o primeiro item do array
selected_item = data.get(0);
}catch(Exception e){
e.printStackTrace();
//trate sua exceção
}
}
public int getSelectedIndex(){
return index;
}
public void setSelectedIndex(int anIndex){
this.index = anIndex;
}
@Override
public void setSelectedItem(Object anItem) {
String item = (String)anItem;
selected_item = data.get(data.indexOf(item));
setSelectedIndex(data.indexOf(item));
}
@Override
public Object getSelectedItem() {
return selected_item;
}
@Override
public int getSize() {
return data.size();
}
@Override
public Object getElementAt(int index) {
return data.get(index);
}
@Override
public void addListDataListener(ListDataListener l) {
// Método não utilizado.
}
@Override
public void removeListDataListener(ListDataListener l) {
// Método não utilizado.
}
}
Pronto, agora vamos atribuir essa classe ao seu ComboBox, assim:
....
comboboxcliente = new JComboBox(new DBComboModel("NomeCliente","Select NomeCliente From Cliente Order By NomeCliente"));
....
Repare que com essa “ComboBoxModel”, voce apanha dados diretamente do banco, para preencher a lista do ComboBox, com uma instrução SQL, e ainda por cima, criou um Model genérico para diversos ComboBoxes, bastando tão somente mudar o nome do campo que vai preencher a lista e a instrução SQL. Muito melhor do que fazer persistência de dados em vários ArrayList para depois preencher um ComboBox, não é mesmo.
Agora quando voce clicar em um item do JComboBox, vamos preencher o JTextField, para isto temos que disparar um evento do JComboBox chamado “ItemListener”, que quando um item for selecionado ele tem que preencher o JTextField, então vejamos:
....
comboboxcliente = new JComboBox(new DBComboModel("NomeCliente","Select NomeCliente From Cliente Order By NomeCliente"));
comboboxcliente.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
txtNomeCliente.setText((String)e.getItem());
// Ou se preferir, também pode ser assim:
JComboBox combocliente = (JComboBox)e.getSource();
txtNomeCliente.setText((String)combocliente.getSelectedItem());
}
});
Um abraço