Я пытаюсь создать вертикально прокручивающуюся таблицу в диалоге, но безуспешно.Когда я создаю таблицу, она автоматически расширяется до необходимой высоты независимо от размера / разрешения экрана.Множество данных создает таблицу, которая выходит далеко за нижнюю часть экрана.
Мой код выглядит примерно так (не дословно, может быть, типа или два):
final Table table = new Table(parent, SWT.SINGLE |
SWT.FULL_SELECTION | SWT.SCROLL_LINE | borderStyle | orientation );
table.setHeaderVisible(true);
table.setLinesVisible(true);
TableViewer tableView = new TableViewer(table);
// code yanked to set up the columns (movable == false,
// resiable == true, with set text, widths, and toolTipText)
tableView.setContentProvider(new ArrayContentProvider());
// BeanLabelProvider's getColumnText returns the beanDescriptor's
// getReadMethod.invoke().toString()
tableView.setLabelProvider(new BeanLableProvider(MyClass.class));
tableView.setInput(anArrayOfMyClass);
Весь этот код находится в классе моего диалога createDialogArea ().
В любом случае, я пробовал следующее:
treeView.setItemCount()
обрезает данные, но неограничить количество отображаемых данных. table.getVerticalBar()
возвращает действительное значение ScrollBar
, а это scrollbar.getVisible() == true;
?!В самом деле?Докажите это.Я так не думал.setVisible(true)
ничего не делает. table.setBounds()
?Нету.Даже после того, как я позвоню layout()
и / или redraw()
. - Выше было сделано в течение
createDialogArea()
.Если я вызываю setBounds()
в MyDialog.initializeBounds (), он сжимает таблицу и добавляет полосы прокрутки (задыхаются!), Но размер диалогового окна не изменяется.Вызов table.getParent().layout(true)
изменяет размер таблицы, а не диалогового окна.Ауг! В initBounds у меня есть следующий код:
Shell shell = getShell();
shell.setBounds(foo, bar, baz qux);
myTable.setBounds(foo, bar, baz-fudgeX, qux-fudgeY);
myTable.getVerticalBar().setVisible(true); // see, it wasn't null!
// this line doesn't seem to have any effect, I can comment it out and have
// the same apparent result.
shell.layout(true);
// If I call shell.pack() the table snaps back to its original size (huge).
Без вызова pack()
, все в порядке / отменитькнопки отсекаются от нижней части диалога.С ним все упражнение становится спорным.
Почему у меня возникает ощущение, что я упускаю что-то действительно базовое, что заставляет меня хотеть бить себя по лбу, когда кто-то другой указывает на это?