Java codepublic static void main(String[] args) {
final Display display = Display.getDefault();
final JFrame frame = new JFrame();
// 关键 使用 canvas 进行交互
final JButton jb = new JButton("按一下");
frame.add(jb);
frame.setVisible(true);
frame.setSize(1024, 780);
jb.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
final Canvas canvas = new Canvas();
frame.remove(jb);
JPanel jp = new JPanel();
frame.getContentPane().add(jp);
jp.add(canvas, BorderLayout.CENTER);
jp.getParent().add(canvas, BorderLayout.CENTER);
// 利用SWT_AWT.new_Shell 交互
display.syncExec(new Runnable(){
public void run(){
final Shell shell = SWT_AWT.new_Shell(display, canvas);
shell.setLayout(new FillLayout());
shell.layout();
shell.setSize(1024, 780);
initGUI(shell);
shell.open();
shell.setVisible(true);
}
});
}
});
while (frame.isDisplayable())
if (!display.readAndDispatch())
display.sleep();
}