Ola amigos , tenho uma dificuldade especifica,
sou iniciante,
Gostaria de colocar no JComboBox uma lista com apenas o nome dos objetos "gênero "
public class Genero {
private int cod_genero;
private String nome_genero;
public int getCod_genero() {
return cod_genero;
}
public void setCod_genero(int cod_genero) {
this.cod_genero = cod_genero;
}
public String getNome_genero() {
return nome_genero;
}
public void setNome_genero(String nome_genero) {
this.nome_genero = nome_genero;
}
}
consulta
public List<Genero> consultarGeneroNome() {
List <Genero> listadeGenero = new ArrayList();
ResultSet rs;
Genero a;
sSQL = "SELECT genero.nome_genero"
+ "FROM genero ";
try {
con = Conection.getConexao();
pstmt = con.prepareStatement(sSQL);
rs = pstmt.executeQuery();
while (rs.next()){
a = new Genero();
a.setNome_genero(rs.getString("nome_genero"));
listadeGenero.add(a);
}
System.out.println("Consulta feita com exito!");
rs.close();
pstmt.close();
con.close();
}
catch (SQLException erro) {
System.out.println("Erro ao consultar Genero - "+ erro.getMessage());
}
return listadeGenero;
}
Observe que retorno a lista de objetos genero, mas não faço ideia de como implementar a inserção do nome de genero de cada objeto no combobox quando a tela for iniciada,
Você não precisa inserir nada no JComboBox.
Você já inseriu os objetos Genero em um List.
Agora basta implementar um ComboBoxModel para o seu JComboBox renderizar esse List:
Faz uma inner class dentro de sua tela, conforme abaixo:
// ComboBoxModel para renderizar um List de objetos do tipo Genero
private class ComboBoxModelGenero extends DefaultComboBoxModel<String> {
// O JComboBox vai chamar este método para renderizar os seus elementos
@Override
public String getElementAt(int index) {
Genero genero = listadeGenero.get(index); // obtém o Genero da lista
return genero.getNome_genero(); // retorna o seu nome
}
}
Agora é só setar o modelo para o seu JComboBox:
meuJComboBox.setModel( new ComboBoxModelGenero() );
2 curtidas
public class ComboBoxModelGenero extends DefaultComboBoxModel {
@Override
public String getElementAt(int index) {
Genero genero=new Genero();
List <Genero> ListaGenero=new ArrayList();
GeneroDAO g=new GeneroDAO();
ListaGenero.addAll(g.consultarGeneroNome()); //essa função retorna uma lista de genero do banco.
genero =ListaGenero.get(index); // obtém o Genero da lista
return genero.getNome_genero(); // retorna o seu nome
}
}
esta correto ? na tela em relação a setar
meuJComboBox.setModel( new ComboBoxModelGenero() );
esse treixo de codigo deu erro.
Você precisa ajustar o generics para ficar de acordo.
Posta o código completo da ViewCadastrarFilme, acho que você não entendeu que o modelo deveria ser uma inner class para enxergar a lista de Genero.
1 curtida
Realmente não sei o que é inner class vou postar o codigo
package Views.ViewsCrudFilme;
import DomainPackage.Filme;
import DomainPackage.Genero;
import PackageDAO.ComboBoxModelGenero;
import PackageDAO.FilmeDAO;
import PackageDAO.GeneroDAO;
import java.util.ArrayList;
import java.util.List;
public class ViewCadastrarFilme extends javax.swing.JInternalFrame {
public ViewCadastrarFilme() {
initComponents();
}
@SuppressWarnings("unchecked")
private void BTCadastrarActionPerformed(java.awt.event.ActionEvent evt) {
Filme Filme1 = new Filme();
FilmeDAO Filme1DAO = new FilmeDAO();
Filme1.setNome_filme(TFNome.getText());
}
private void BTLimparActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}
private void TFNomeActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}
private void TFDiretorActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}
private void TFProdutoraActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}
private void CBGeneroActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}
private void TFProdutora1ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}
}
ViewCadastrarFilme é um internal frame dentro do principal
Você não postou o código completo, ou postou o fonte errado, não há nenhum JComboBox no que você postou.
1 curtida
Colega, veja o código que você postou, não tem nenhum CBGenero.
Também não tem o código onde você usa o DAO para obter a lista de Genero.
/*Conseguir Resolver segue as instruções abaixo:
Basicamente no meu caso criei três Classes , famoso modelo Três camadas .
Dominio : com A classe Genero com seus atributos Getters e setters.:
pacote DAO : GeneroDAO contendo todas as funcionabilidades da classe genero. :
View : No meu caso tela desktop desejada o qual vai conter o JComboBox
*/
package DomainPackage;
public class Genero {
private int cod_genero;
private String nome_genero;
public int getCod_genero() {
return cod_genero;
}
public void setCod_genero(int cod_genero) {
this.cod_genero = cod_genero;
}
public String getNome_genero() {
return nome_genero;
}
public void setNome_genero(String nome_genero) {
this.nome_genero = nome_genero;
}
}
Classe GeneroDAO onde esta minha consulta SQL
public class GeneroDAO {
String sSQL;
Connection con;
PreparedStatement pstmt;
public List <Genero> consultarGeneroNome() {
List <Genero> listadeGenero = new ArrayList();
ResultSet rs;
Genero a;
sSQL = "SELECT genero.nome_genero"
+ " FROM genero ";
try {
con = Conection.getConexao();
pstmt = con.prepareStatement(sSQL);
rs = pstmt.executeQuery();
while (rs.next()){
a = new Genero();
a.setNome_genero(rs.getString("nome_genero"));
listadeGenero.add(a);
}
System.out.println("Consulta feita com exito!");
rs.close();
pstmt.close();
con.close();
}
catch (SQLException erro) {
System.out.println("Erro ao consultar Genero - "+ erro.getMessage());
}
return listadeGenero;
}
}
esse treixo de codigo é responsavel por inserir os dados da consulta do banco de dados no jcombobox.
essa região é no codigo fonte da tela na sua inicialização…
public ViewCadastrarFilme() { //codigo padrão de inicialização da tela
initComponents();
GeneroDAO g=new GeneroDAO();
List <Genero> ListaGenero = new ArrayList();
for(Genero g1: g.consultarGeneroNome()){
CBGenero.addItem(g1.getNome_genero()); //adciona cada informação no jcombobox
}
}
Obrigado amigo por me ajudar , acabei encontrando solução , Obrigado pela ajuda de verdade.