So, I have a problem when I add an image to any column of the JFace table, the first column behaves the same as it has an image, and the text is indented by the size of this image.
Here is a screenshot illustrating my point with the code needed to create it. In any case, to stop this, because it really gets on my wick?
Hi,
Glen x

package widgets; import java.util.ArrayList; import java.util.List; import org.eclipse.jface.viewers.ArrayContentProvider; import org.eclipse.jface.viewers.StyledCellLabelProvider; import org.eclipse.jface.viewers.TableViewer; import org.eclipse.jface.viewers.TableViewerColumn; import org.eclipse.jface.viewers.ViewerCell; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.graphics.ImageData; import org.eclipse.swt.graphics.PaletteData; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; public class ComponentTest { private static Image image; public static void main(String[] args) { final Display display = new Display(); final Shell shell = new Shell(display); shell.setLayout(new GridLayout(1, true)); TableViewer viewer1 = getViewer(shell, true); TableViewer viewer2 = getViewer(shell, false); List<String> rows = new ArrayList<String>(); rows.add("Row 1"); rows.add("Row 2"); viewer1.setInput(rows); viewer2.setInput(rows); shell.pack(); shell.open(); while (!shell.isDisposed()) { if (!display.readAndDispatch()) { display.sleep(); } } display.dispose(); } private static TableViewer getViewer(final Shell shell, boolean addImage) { TableViewer viewer = new TableViewer(shell, SWT.FULL_SELECTION | SWT.H_SCROLL | SWT.V_SCROLL | SWT.NONE); viewer.setContentProvider(ArrayContentProvider.getInstance()); viewer.getTable().setLayoutData( new GridData(SWT.FILL, SWT.FILL, true, true)); TableViewerColumn col = new TableViewerColumn(viewer, SWT.NONE); col.getColumn().setWidth(100); col.getColumn().setText("Text Column"); col.setLabelProvider(new StyledCellLabelProvider() { @Override public void update(ViewerCell cell) { cell.setText((String) cell.getElement()); } }); col = new TableViewerColumn(viewer, SWT.NONE); col.getColumn().setWidth(100); col.getColumn().setText("Second Text Column"); col.setLabelProvider(new StyledCellLabelProvider() { @Override public void update(ViewerCell cell) { cell.setText((String) cell.getElement()); } }); if (addImage) { col = new TableViewerColumn(viewer, SWT.NONE); col.getColumn().setWidth(100); col.getColumn().setText("Image Column"); col.setLabelProvider(new StyledCellLabelProvider() { @Override public void update(ViewerCell cell) { cell.setImage(getImage(shell.getDisplay())); } }); } viewer.getTable().setHeaderVisible(true); return viewer; }
source share