2013-08-07 4 views
0

NatTable (org.eclipse.swt.widgets.Canvas를 확장)을 JPanel에 추가하려고합니다. (대부분의 프로그램 그래픽은 Swing에 있으며, 나는 오히려 익숙하지 않습니다. SWT). 나는 SWT_AWT 클래스를 테스트하기 위해 아래의 코드를 사용하려고하지만 오류 가지고 :JPanel에 SWT Canvas 추가하기

org.eclipse.swt.widgets.Canvas canvas = 
       new org.eclipse.swt.widgets.Canvas(
         new org.eclipse.swt.widgets.Shell(
           Display.getDefault(), 
           1264), 
         SWT.NONE); 
     java.awt.Frame frame = SWT_AWT.new_Frame(canvas); //error here 
     JPanel returnMe = new JPanel(); 
     returnMe.add(frame); 

     return returnMe; 

예외 스레드에서 "AWT-EventQueue의-0"java.lang.IllegalArgumentException가 : 유효하지 않은 인수를

SWT 컴포지트를 통과 할 때 왜이 오류가 발생하는지 이해할 수 없습니다. 아무도 내가 뭘 잘못하고 그것을 해결하는 방법을 설명 할 수 있습니까?

답변

2

In order for the embedding to succeed, the composite must have been created with the SWT.EMBEDDED style.

또 다른 방법은 SWT에 스윙 구성 요소를 포함하는 것입니다. 대신 당신은 당신이 SWT 파견 스레드에서 SWT 코드를 실행하고 AWT 파견 스레드에서 코드를 스윙 준비 할 필요가

java.awt.Canvas canvas = ... 
// assumes this code is running in SWT thread 
Shell shell = SWT_AWT.new_Shell(Display.getCurrent(), canvas); 
NatTable table = new NatTable(shell, SWT.NONE); // etc. 

주의가 필요합니다.

관련 문제