Galera,
Acho que acabei de verificar ou descobrir um bug da JDK 1.6.0_25
Com o código abaixo, acessando a ComboBox via teclado e utilizando das setas para navegar entre os itens da combo box mesmo sem apertar enter para mudar o valor do combo, ele está acessando a action listener do combo… e se por acaso chamar o método removeAllItens() do JComboBox tb acessa a actionlistener do JComboBox como se tivesse clicando em algum item do combo. Alguem já viu isso? sabe apartir de qual versão começou esse problema? Há alguma maneira de reportar à oracle?
Testei o mesmo codigo com uma jdk 1.6 diferente e funcionou, mas não sei qual é a release desta q testei. vou tentar verificar aqui.
Codigo de teste:
[code]package com.teste;
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
public class Frame extends JFrame{
private JComboBox combo;
private JButton botao;
public Frame() {
Container contentPane = this.getContentPane();
JPanel painel = new JPanel();
combo = new JComboBox();
combo.addItem("Bauru");
combo.addItem("São Carlos");
combo.addItem("São Paulo");
//ACTION DO JCOMBO BOX - TESTE JDK 1.6_25
combo.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(null, "ACESSOU ACTION LISTENER DO COMBO!");
}
});
botao = new JButton("Clique");
botao.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(Frame.this, "ACTION LISTENER DO BOTÃO");
}
});
painel.add(combo);
painel.add(botao);
contentPane.add(painel, BorderLayout.NORTH);
this.setTitle("Teste JDK 1.6_25 JComboBox");
this.pack();
this.setVisible(true);
}
public static void main(String[] args){
new Frame();
}
}
[/code]
Abrs.
