将SWT画布添加到JPanel



我正在尝试向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代码。

最新更新