Bom dia a todos!
Alguém poderia me ajudar.
Esta linha de Código abaixo coloca uma figura jpg no combo box.
jComboBox1.setModel(new javax.swing.DefaultComboBoxModel(new Object[]{“Amarelo”,“Vermelho”,“Azul”,“Verde”,“Preto”, new ImageIcon(“C:/Diversos/Imagens_Icones/Jpg e Gif/Matrícula Única.gif”)}));
O que está mostrando errado é que ele repete o ultimo ítem (PRETO).
Mostra a figura do lado esquerdo do combo e a descrição na frente. Mas sempre o último ítem repete:
(FIGURA) Amarelo
(FIGURA) Vermelho
(FIGURA) Azul
(FIGURA) Verde
(FIGURA) Preto
(FIGURA) Preto
Obs.: Eu exibo num JOptionPane o Item e o seu index:
JOptionPane.showMessageDialog(this,jComboBox1.getSelectedItem());
JOptionPane.showMessageDialog(this,jComboBox1.getSelectedIndex());
No último ítem, o repetido ele mostra como descrição a figura e o index correto, não mostra a descrição preto.
Parece que ele está se confundindo com a descrição e o jpg.
Alguém entende o que acontece e pode dar uma ajuda?
Obrigado!
Cara não sei se você consegue colocar cores e imagens em um mesmo JComboBoxModel, se for possível posta aí.
amigo…
antes de tudo… poste seu código dentro das tags CODE…
agora sobre o problema…
geralmente é exibido o toString do objeto que passa para o Model, nesse caso de imagem, tenta verificar o que o ImageIcon retorna.
tente algo assim…
jComboBox1.setModel(new javax.swing.DefaultComboBoxModel(new Object[]{"Amarelo","Vermelho","Azul","Verde","Preto", new ImageIcon("C:/Diversos/Imagens_Icones/Jpg e Gif/Matrícula Única.gif", "EXEMPLO")}));
As Cores são apenas descrições, o mesmo que estivesse usando nomes de pessoas, mas usei como descrição apenas nomes de cores.
Estou tentando fazer o exemplo que vc postou, mas ainda não tive êxito.
Sou meio Neófito em Java
É não consegui mesmo, não mudou nada!
jComboBox1.setModel(new javax.swing.DefaultComboBoxModel(new Object[]{"Vermelho","Azul","Verde","Preto", new ImageIcon("C:/Diversos/Imagens_Icones/Jpg e Gif/Matrícula Única.gif", "EXEMPLO")}));
Acrescentando a palavra exemplo, mudou a descrição mostrada no JOptionPane.showMessageDialog.
Mostra o índice 4 com a descrição EXEMPLO.
Mas no código o índice quatro nem existe. Só vai até o três (Preto)
Parece que o combo está entendendo que o código colocado para mostrar a imagem é mais uma descrição como as: Vermelho,Azul,Verde,Preto.
No JOptionPane.showMessageDialog ele mostra índice 4 e na descrição mostra a figura Matrícula Única.gif.
Ola, amigo.
Encontrei um codigo que é exatamente o que vc precisa. Combobox com imagem e o nome do lado dentro da combo :
http://www.java2s.com/Code/Java/Swing-JFC/CustomComboBoxwithImage.htm
Ou tem esse exemplo que a comboBox traz o nome da imagem e a imagem aparece abaixo em uma label.
public class TestarMetodosFrame extends javax.swing.JFrame {
private String names[] = { "figura1", "figura2", "figura3", "figura4" };
private String caminho[] = {
"C:/Users/Fabiano/Pictures/exemplo1.jpg",
"C:/Users/Fabiano/Pictures/exemplo2.jpg",
"C:/Users/Fabiano/Pictures/exemplo3.jpg",
"C:/Users/Fabiano/Pictures/exemplo4.jpg"
};
private Icon icons[] = {
new ImageIcon( caminho[ 0 ] ),
new ImageIcon( caminho[ 1 ] ),
new ImageIcon( caminho[ 2 ] ),
new ImageIcon( caminho[ 3 ] )
};
public TestarMetodosFrame() {
setLayout( new FlowLayout() );
jComboBox1 = new JComboBox( names );
jComboBox1.setMaximumRowCount( 3 );
jComboBox1.addItemListener( new ItemListener() {
public void itemStateChanged( ItemEvent e ) {
jLabel1.setIcon(
icons[ jComboBox1.getSelectedIndex() ] );
}
}
);
add( jComboBox1 );
jLabel1 = new JLabel( icons[ 0 ] );
add( jLabel1 );
setDefaultCloseOperation(TestarMetodosFrame.EXIT_ON_CLOSE);
this.setSize( 350, 600 );
this.setLocationRelativeTo(null);
this.setVisible(true);
}
Abraços 8) .