I have a Composite based class that includes an instance of SWT List . Using the default settings, the list contains five lines in my WinXP system. Without relying on hard-coded pixel values ββor DPI parameters and the like, how to set the height of the list (and the surrounding composite) to a fixed number of lines, say 3, without any added internal fields?
public FileSetBox(Composite parent, int style) { super(parent, style); setLayout(new FillLayout()); this.list = new List(this, SWT.V_SCROLL); ... }
Update:
The following works, but do not take into account the height added by the border, which leads to the fact that parts of the last line will be covered. Any ideas how to calculate this too?
public FileSetBox(Composite parent, int style) { ... GC gc = new GC(this); gc.setFont(this.list.getFont()); this.preferredHeight = gc.getFontMetrics().getHeight() * 3; gc.dispose(); ... } @Override public Point computeSize(int arg0, int arg1) { Point size = super.computeSize(arg0, arg1); return new Point(size.x, this.preferredHeight); }
source share