Salut,

J'ai fais plusieurs applications et je tombe souvent sur un problème bénin, mais a la longue agaçant.

Si je fais un éditeur de cell qui utilise le JComboBox, ouvrir un combo box dans une cellule n'est pas un problème. Sauf que si j'ouvre le popup menu d'un combo box, et que j'essaie d'en ouvrir un deuxième directement après, (sans fermer le popup) le deuxième ne s'ouvrira pas. Même qu'on peut quelque fois le voir s'ouvrir et se refermer immédiatement. Si tu clique ailleur pour que le combo box disparraisse, il n'y a plus de soucis, le 2e combo va s'ouvrir.

J'ai pris habitude de voir ce problème dans mes applications, mais j'avoue que j'aimerais trouver la solution...

Voici un exemple le plus simple que j'ai pu faire pour démontrer le problème:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
 
import java.awt.Component;
import javax.swing.DefaultCellEditor;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JTable;
import javax.swing.table.TableCellRenderer;
 
 
public class TestTableCombo{
 
    public static void main(String[] args) throws Exception{
        JFrame fr = new JFrame();
        fr.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        JTable tbl = new JTable(5, 5);
 
        tbl.setDefaultRenderer(Object.class, new TableCellRenderer(){
            JComboBox comp = new JComboBox();
            public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
                comp.removeAllItems();
                comp.addItem(value);
                return comp;
            }
        });
 
        tbl.setDefaultEditor(Object.class, new DefaultCellEditor(new JComboBox(new String[]{"1", "2", "3", "4", "5"})));
 
        fr.add(tbl);
        fr.pack();
        fr.setVisible(true);
    }
}