Проблема возникает на Win10. Eclipse 4.13.0.
Я получил JFace TableViewer над виджетом Text в GridLayout. Всякий раз, когда я заполняю таблицу содержимым, виджет Текст исчезает. Если я настраиваю оболочку как FillLayout, она работает, но это не то, что я хочу, потому что у меня есть некоторые виджеты, не желающие захватывать пространство (например, поле поиска, разделитель и т. Д. c.).
Я не могу найти проблему, любой совет?
import java.util.ArrayList;
import java.util.List;
import org.eclipse.jface.viewers.ArrayContentProvider;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Link;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.Text;
public class TestDialog {
public static void main(String[] args) {
Display display = new Display();
Shell shell = new Shell(display);
shell.setBounds(10, 10, 800, 600);
shell.setLayout(new GridLayout());
Label separator = new Label(shell, SWT.SEPARATOR | SWT.HORIZONTAL);
separator.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));
Link link = new Link(shell, SWT.NONE);
link.setText("Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore");
link.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false, 1, 1));
Text txtSearch = new Text(shell, SWT.BORDER | SWT.SEARCH | SWT.ICON_SEARCH | SWT.CANCEL);
txtSearch.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false, 1, 1));
txtSearch.setMessage("Enter search phrase here");
TableViewer tableViewer = new TableViewer(shell, SWT.BORDER | SWT.FULL_SELECTION);
tableViewer.setContentProvider(ArrayContentProvider.getInstance());
Table table = tableViewer.getTable();
table.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));
Group grp = new Group(shell, SWT.NONE);
grp.setText("MyGroup:");
grp.setLayout(new FillLayout(SWT.HORIZONTAL));
grp.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));
Text txt = new Text(grp, SWT.WRAP);
List<String> entries = new ArrayList<String>();
for (int i = 0; i < 100; i++) {
entries.add("Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore");
}
tableViewer.setInput(entries);
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
}
display.dispose();
}
}