У меня есть таблица в . Часть область должна отображаться при открытии моего приложения RCP, однако на данный момент я не знаю, как сделать таблицу автоматического изменения размера в соответствии с Часть снаружи. Вы можете видеть на моем экране ниже, что является уродливым.Как сделать таблицу автоматического изменения размера в соответствии с внешней частью области в приложении RCP с помощью SWT?
И следующий мой исходный код, я бы очень признателен, что если кто-нибудь, кто может показать мне, как сделать таблицу автоматического изменения размера.
import java.util.List;
import javax.annotation.PostConstruct;
import javax.inject.Inject;
import org.eclipse.e4.ui.di.Focus;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.FormAttachment;
import org.eclipse.swt.layout.FormData;
import org.eclipse.swt.layout.FormLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableColumn;
import com.hpi.hpdm.console.utils.Device;
import com.hpi.hpdm.console.utils.DeviceRetriever;
public class DeviceListPart {
private static Table table;
@PostConstruct
public void createControls(Composite parent) {
parent.setLayout(new FormLayout());
table = new Table(parent, SWT.MULTI | SWT.BORDER | SWT.FULL_SELECTION);
table.setLinesVisible(true);
table.setHeaderVisible(true);
FormData fd_table = new FormData();
fd_table.bottom = new FormAttachment(0, 465);
fd_table.right = new FormAttachment(0, 620);
fd_table.top = new FormAttachment(0, 44);
fd_table.left = new FormAttachment(0, 10);
table.setLayoutData(fd_table);
Button btnRetrieve = new Button(parent, SWT.NONE);
FormData fd_btnRetrieve = new FormData();
fd_btnRetrieve.bottom = new FormAttachment(table, -4);
fd_btnRetrieve.left = new FormAttachment(table, 0, SWT.LEFT);
btnRetrieve.setLayoutData(fd_btnRetrieve);
btnRetrieve.setText("Retrieve");
Button btnAdd = new Button(parent, SWT.NONE);
FormData fd_btnAdd = new FormData();
fd_btnAdd.top = new FormAttachment(btnRetrieve, 0, SWT.TOP);
fd_btnAdd.left = new FormAttachment(btnRetrieve, 6);
btnAdd.setLayoutData(fd_btnAdd);
btnAdd.setText("Add");
Button btnDelete = new Button(parent, SWT.NONE);
FormData fd_btnDelete = new FormData();
fd_btnDelete.top = new FormAttachment(btnRetrieve, 0, SWT.TOP);
fd_btnDelete.left = new FormAttachment(btnAdd, 6);
btnDelete.setLayoutData(fd_btnDelete);
btnDelete.setText("Delete");
String[] titles = { "Device Name", "Description"};
for (int i = 0; i < titles.length; i++) {
TableColumn column = new TableColumn(table, SWT.NONE);
column.setText(titles[i]);
table.getColumn(i).pack();
}
for (int i=0; i<titles.length; i++) {
table.getColumn (i).pack();
}
}
@Focus
public void onFocus() {
table.setFocus();
}
}
Спасибо за ваше предложение. Оно работает. Не могли бы вы показать мне правильный способ создания моего собственного «Composite» без нарушения эффекта GUI, который я хочу? Я попробовал 'Composite ownComp = новый Composite (родительский, SWT.NONE); ownComp.setLayout (новый FormLayout()); ', это не то, что я хочу, хотя. – kenshinji
Почему это не то, что вы хотите? Не забудьте изменить все остальные ссылки на 'parent' как' ownComp'. –