bonjour,
j'utilise une table virtuel contenant enormement d'item dont c'est le but.
le hic, c'est que la table prend le plus de place possible, en horizontal, c'est normal , mais en vertical, elle affiche tout les item, et donc, le virtual ne sert a rien !!!
y a t il un moyen de dire doit prendre le plus de place possible en horisontal, mais en vertical, tu n'affiche que 10 lignes.
l'exemple ici, le pere c'est le shell, mais dans l'application le composite table est dans un autre composite quelquonque. (et on peut creer un composite intermediaire si necessaire.).
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 import org.eclipse.swt.SWT; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Event; import org.eclipse.swt.widgets.Listener; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Table; import org.eclipse.swt.widgets.TableItem; public class testframe { static int count = 0; public static void main(String[] args) { final Display display = new Display(); Shell shell = new Shell(display); shell.setLayout(new GridLayout(1, false)); final Table table = new Table(shell, SWT.BORDER | SWT.VIRTUAL | SWT.V_SCROLL); table.addListener(SWT.SetData, new Listener() { public void handleEvent(Event e) { TableItem item = (TableItem) e.item; count++; item.setText("Item " + count); } }); table.setItemCount(1000000); shell.open(); while (!shell.isDisposed()) { if (!display.readAndDispatch()) display.sleep(); } display.dispose(); } }
j'ai essayer le computeSize mais cela me renvoi la taille dont le composite a besoin et non la table de la place qu'elle a.
j'ai essayer getparent().getsize() mais c'est toujours 0
Autre choses, je suis obliger d'utiliser swt et non jface.
voila, si qqn a une idée.
merci
a+
Partager