Eclipse二次開發:SWT中使用Swing
阿新 • • 發佈:2018-11-12
在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