我正在尝试向JPanel添加一个NatTable(它扩展了org.eclipse.swt.widgets.Canvas)(该程序的大多数图形都在Swing中,我对swt相当陌生)。我试图使用下面的代码来测试SWT_AWT类,但我得到了一个错误:
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组合时会出现这个错误。有人能解释一下我做错了什么以及如何改正吗?
为了使嵌入成功,必须使用
SWT.EMBEDDED
样式创建组合。
此外,您还将走另一条路:在SWT中嵌入Swing组件。相反,您需要
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.
请注意,您需要安排在SWT调度线程中运行SWT代码,在AWT调度线程运行Swing代码。