您的位置:首页 > 编程语言 > Java开发

SWT中使用Swing

2018-02-25 15:32 621 查看
在SWT出现之前,已经有众多的Swing程序和控件被开发出来,为了充分利用这些现有的资源,SWT需要提供一种在SWT中使用Swing控件的途径。 
Swing是通过在AWT的Canvas控件上绘图以显示各种控件的,而AWT的控件与SWT的原理相似,都是直接对应到操作系统的控件资源,因此只要使用SWT模拟出AWT的Canvas,Swing的控件就可以在上面运行。为此,SWT提供了一个org.eclipse.swt.awt.SWT_AWT类,该类通常被叫做SWT_AWT桥。 
在SWT_AWT中,提供了一个方法用于从SWT中的Composite容器得到一个AWT的Frame容器new_Frame(Composite composite)。我们既然得到了一个AWT Frame,就可以向这个Frame中添加一个Swing的容器Panel。下面我们来看一个示例:
package swt;

import java.awt.Frame;

import javax.swing.JButton;
import javax.swing.JPanel;

import org.eclipse.swt.SWT;
import org.eclipse.swt.awt.SWT_AWT;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.junit.Test;

public class SwingTest
{
@Test
public void test()
{
Display display = Display.getDefault();
Shell shell = new Shell(display);
shell.setBounds(100, 100, 200, 100);
shell.open();

Composite composite = new Composite(shell, SWT.EMBEDDED);
composite.setBounds(0, 0, 200, 100);

Frame frame = SWT_AWT.new_Frame(composite);
JPanel panel = new JPanel();
panel.add(new JButton("I'm a swing button"));
frame.add(panel);
while (!shell.isDisposed())
{
if (!display.readAndDispatch())
{
display.sleep();
}
}
display.dispose();
}
}
运行效果如图所示:

转载自http://blog.csdn.net/jianggujin/article/details/51436070
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Eclipse插件