如何将Swing小部件插入SWT我在线程中遇到异常;“主要”;使用SWT_AWT.new_框架时发生java.lang.IllegalArgumentException
您好,我是eclipse的新手,我想在SWT中的现有代码中添加一个像JCombobox这样的Swing组件。有没有办法通过SWT或Swing中可用的API来实现这一点 我使用了SWT\u AWT.new\u Frame(composite)API。这是我的密码如何将Swing小部件插入SWT我在线程中遇到异常;“主要”;使用SWT_AWT.new_框架时发生java.lang.IllegalArgumentException,java,swing,eclipse-plugin,swt,jface,Java,Swing,Eclipse Plugin,Swt,Jface,您好,我是eclipse的新手,我想在SWT中的现有代码中添加一个像JCombobox这样的Swing组件。有没有办法通过SWT或Swing中可用的API来实现这一点 我使用了SWT\u AWT.new\u Frame(composite)API。这是我的密码 public static void main(String[] args) { final Display display = new Display(); final Shell shell = new
public static void main(String[] args) {
final Display display = new Display();
final Shell shell = new Shell(display);
shell.setLayout(new FillLayout());
Composite composite = new Composite(shell, SWT.NO_BACKGROUND);
Frame myframe = SWT_AWT.new_Frame(composite);
Panel mypanel = new Panel(new BorderLayout()) {
@Override
public void update(java.awt.Graphics g) {
paint(g);
}
};
myframe.add(mypanel);
JRootPane root = new JRootPane();
mypanel.add(root);
java.awt.Container contentPane = root.getContentPane();
String languages[]={"C","C++","C#","Java","PHP"};
final JComboBox cb=new JComboBox(languages);
JScrollPane scrollPane = new JScrollPane(cb);
contentPane.setLayout(new BorderLayout());
contentPane.add(scrollPane);
shell.open();
while(!shell.isDisposed()) {
if (!display.readAndDispatch()) display.sleep();
}
display.dispose();
}
我得到以下例外
Exception in thread "main" java.lang.IllegalArgumentException: Argument not valid
at org.eclipse.swt.SWT.error(SWT.java:4533)
at org.eclipse.swt.SWT.error(SWT.java:4467)
at org.eclipse.swt.SWT.error(SWT.java:4438)
at org.eclipse.swt.awt.SWT_AWT.new_Frame(SWT_AWT.java:129)
实际上,您已经使用了正确的API。但是您没有添加诸如在创建复合时将AWT小部件嵌入SWT这样的功能SWT.嵌入式
Composite composite = new Composite(shell, SWT.NO_BACKGROUND | SWT.EMBEDDED);
Frame frame = SWT_AWT.new_Frame(composite);
有关此API用法的更多信息,请浏览此链接。有一个桥梁;但总的来说应该避免,因为它有一些小问题。为什么不能使用Eclipse SWT小部件?@KevinO是的,这是正确的。但是这个应用程序很旧,他们现在希望我添加这样的功能。