Я пытаюсь разработать пользовательский интерфейс SWT как новичок в программировании как на SWT, так и на пользовательском интерфейсе в целом. На основании фрагментов документации SWT я написал следующее:
Display.setAppName("App Name");
Display display = new Display();
Shell shell = new Shell(display);
shell.setLayout(new GridLayout());
Group group = new Group(shell, SWT.DEFAULT);
group.setLayout(new GridLayout());
for (int i = 0; i < 3; i++)
new Button(group, SWT.PUSH).setText("ABC" + i);
new Label(group, SWT.SEPARATOR | SWT.VERTICAL);
for (int i = 0; i < 3; i++)
new Button(group, SWT.PUSH).setText("ABC" + i);
new Label(group, SWT.SEPARATOR | SWT.HORIZONTAL);
Table table = new Table(group, SWT.MULTI | SWT.BORDER | SWT.FULL_SELECTION);
table.setLinesVisible(true);
table.setHeaderVisible(true);
GridData data = new GridData(SWT.FILL, SWT.FILL, true, true);
table.setLayoutData(data);
for (String title : new String[] { "A", "B", "C", "D", "E", "F", "G" })
new TableColumn(table, SWT.NONE).setText(title);
for (int i = 0; i < 128; i++) {
TableItem item = new TableItem (table, SWT.NONE);
item.setText(0, "123");
item.setText(1, "234");
item.setText(2, "345");
item.setText(3, "456");
item.setText(4, "567");
item.setText(5, "678");
item.setText(6, "789");
}
for (TableColumn column : table.getColumns())
column.pack();
shell.pack();
shell.open();
while (shell.isDisposed() != true)
if (display.readAndDispatch() != true)
display.sleep();
display.dispose();
}
В результате получается что-то вроде:
ABC1
ABC2
ABC3
|
ABC1
ABC2
ABC3
---
Table
Если я изменю макет в группе на RowLayout (), но не изменю GridData () таблицы на RowData (), я получу исключение приведения класса. Если я изменю его на RowData (), я получу что-то похожее на:
ABC1 ABC2 ABC3 | ABC1 ABC2 ABC3 ---- Table
Я хочу вот что:
ABC1 ABC2 ABC3 | ABC1 ABC2 ABC3
-------------------------------
Table
Есть предложения?