Eclipse RCP 응용 프로그램에서 간단한 SWT 컨테이너를 만들고 표시되는 위치/순서에 문제가 있습니다. 여기에 제가 사용하고있는 코드가 있습니다.RCP 용 SWT composite 표시 문제
@PostConstruct
public void createControls(Composite parent)
{
parent.setBackground(new Color (Display.getCurrent(), 255, 144, 0));
GridData parentData = new GridData(SWT.FILL, SWT.FILL, true, true);
parent.setLayout(new GridLayout(1, true));
parent.setLayoutData(parentData);
Device device = Display.getCurrent();
Color backgroundColor = parent.getBackground();
Color whiteColor = new Color (device, 255, 255, 255);
Color randomColor = new Color (device, 255, 0, 0);
final Composite criteriaContainer = new Composite(parent, SWT.BORDER);
criteriaContainer.setBackground(randomColor);
final GridData gridData = new GridData(SWT.FILL, SWT.FILL, true, false);
final GridData comboGridData = new GridData(SWT.FILL, SWT.TOP, true, false,1,1);
criteriaContainer.setLayout(new GridLayout(1, false));
criteriaContainer.setLayoutData(gridData);
final Label primaryComboLabel = new Label(criteriaContainer, SWT.NONE);
primaryComboLabel.setLayoutData(comboGridData);
primaryComboLabel.setForeground(whiteColor);
primaryComboLabel.setText("View by:");
criteriaContainer.layout();
criteriaContainer.pack();
parent.layout();
parent.pack();
}
내가 라벨이 응용 프로그램의 상단에 표시 얻을 수가 캔트
은 [여기 이미지 설명을 입력합니다 (하단 중앙에 나타납니다) [1]. 동일한 코드를 작성하고 독립 실행 형 SWT 응용 프로그램으로 실행하면 레이블이 왼쪽 상단에 나타납니다. [1] : http://i.stack.imgur.com/OL312.png 여기에 내가 standalone swt 앱을 가지고있을 때의 차이점이 있습니다.
public void showHistoryContainer() throws Exception {
Display display = new Display();
final Shell shell = new Shell(display);
shell.setBackground(new Color (Display.getCurrent(), 255, 144, 0));
나머지 코드는 동일합니다. [2] : http://i.stack.imgur.com/fJmR6.png
이것이 어떤 이유 일 수 있습니까?
참고 : 내 RCP 응용 프로그램에서는 부모 합성에 대해 다른 처리를하고 있지 않습니다.
포인터에 감사드립니다. Color를 사용할 계획이 아니 었습니다. 컨테이너 만 보았고, 왜 그들이 올바른 장소에 나타나지 않았는지를 보았습니다. (비록 내가 그들 중 하나를 처리에 대해 몰랐지만, 감사합니다) 예 createControls는 MPart입니다. 나는 당신의 코드를 시험해 보았고 컨테이너는 여전히 맨 아래부터 위로 보여지고있다. 아직도 이런 일이 일어나지 않는 이유는 무엇입니까 –
그래서 나는 문제를 알아 냈습니다. 나는 잘못된 클래스를보고 있었기 때문에 코드를 게시하지 않았고 아무 것도하지 않는다고 가정했지만 부모에게 그 클래스에 캔버스를 추가하는 다른 메서드를 전달했습니다. 죄송합니다 신참 실수하지만 유용한 포인터 주셔서 감사합니다. –