Bonjour,

Avec ce code, je crée une JComboBox qui affiche une JXtable (dans un jpanel)
Je voudrais que cette JXtable prenne la même longueur que la JComboBox.
Mais ça ne semble pas fonctionner.

Pouvez-vous m'aider ?
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
 
public class TableComboBox extends JComponentComboBox {
 
    private JXTable tbl;
    private String[] colsNames;
    private Object[][] data;
 
    public TableComboBox(String[] colsNames, Object[][] data) {
        this.colsNames = colsNames;
        this.data = data;
        try {
            setSelectedItem(null);
 
            new JComponentComboBox();
            JScrollPane sp = new JScrollPane(getTbl());
            sp.setPreferredSize(new Dimension(900, 150));
 
            setPopupComponent(sp);
 
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
 
    public synchronized void addItem(Object anObject) {
        super.addItem(anObject);
    }
 
    private JXTable getTbl() {
        if ( tbl == null ){
 
            final DefaultTableModel tableModel = new DefaultTableModel(data, colsNames);            
            tbl = new JXTable();
            tbl.setModel(tableModel);
            tbl.addMouseListener(new MouseAdapter(){
                public void mousePressed(MouseEvent e) {
                    mouseClicked(e);
                    super.mousePressed(e);
                }
                public void mouseClicked(MouseEvent e) {
                    String str = tbl.getValueAt(tbl.getSelectedRow(),0).toString();
                    str += " "+ tbl.getValueAt(tbl.getSelectedRow(),1).toString();
                    str += " "+ tbl.getValueAt(tbl.getSelectedRow(),2).toString();
 
                    addItem(str);
                    setSelectedItem(str);
                    hidePopup();
                }
            });
            tbl.setBackground(Color.WHITE);
        }
        return tbl;
    }
}
J'ai essayer getPreferedSize et getSize mais ça me renvoie toujours 0..
Je précise que cette liste est dans un JPanel en GridBagLayout avec un weightx de 0.5 donc pas de taille fixe..

Merci