其实现在由于日食的强大,由于插件的强大,要做一个swt可以用很多插件,而且使用这些插件会使开发变得越来越简单,比如Designer插件就是一个很好用的的插件,他使windows开发象net开发一样简单,我们只是使用拖动就可以做出美观的界面,我们的工作只是需要花时间考虑业务逻辑就可以了,但是这种拖动并不能使我们明白到底什么是swt开发,我们怎样实现swt的。所以我还是写了一个只是使用日食自带的swt的jar包,不用插件做的一个简单的windows程序。
和其他的java程序一样,先我们建立了lib和src的文件夹分别放我们的库文件和源文件,我们的库文件里面放了,这些是做swt开发的必须的库文件。
然后我们建立一个窗体的类文件myshell,实际上,在SWT中要想创建一个窗口,至少要用到两个类:Display和Shell。Display负责处理所有SWT窗口小部件和操作系统之间的交互,比如我们可以通过Display的方法来查询操作系统:哪个控件获取了焦点,当前打开了哪些窗口等等。简单的说,它的功能在于实现了窗口的管理。与Display不同,Shell的实例为我们提供了真正可见的窗口,该窗口一般作为主窗口使用,我们可以在此放置其它窗口部件。Display其实就是窗体了,但是只是存在于后台,为了使我们能看见,成为可视化的,我们就必须有表现层shell,编写好代码以后,是下面的样子:
package src;
/*import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Button;*/ //下面.*就包含了上面所有的空间类,但是我们也可以依次写
import org.eclipse.swt.widgets.*;
public class MyShell {
MyShell( ) {
Display display = new Display( );
Shell shell = new Shell(display);
Button button=new Button(shell, 0);
Text text=new Text(shell, 0);
shell.setSize(600,600); //窗体大小
shell.setText("中华人民共和国"); //窗体标签
text.setBounds(100,30,80,50);
text.setText("我是中国人");
button.setBounds(300,300,50,50);
button.setText("中国");
shell.open( );
while(!shell.isDisposed( )){ //类似于消息循环
if(!display.readAndDispatch( ))
display.sleep( );
}
display.dispose( );
}
}
这样我们就画好一个窗体了,然后我们再建立一个main的入口函数MyRunner来显示:
package src;
/*import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;*/
import org.eclipse.swt.widgets.*;
public class MyRunner {
/**
* @param args
* @param MyShell
*/
public static void main(String[] args) {
MyShell myshell = new MyShell( );
}
}
运行上述代码以后可以显示一个带有按钮和一个文本框的窗体。
如果要实现点击事件的话,我们可以在shell的构造函数里面插入下面代码:
button.addMouseListener(new MouseAdapter(){
public void mouseDown(MouseEvent e){
//当用户点击按键的时候,显示信息
text.setText("我是好中国人");
shell2.open();
}
});
然后当我们单击第一个窗体的按钮的时候会弹出一个新的窗体,而且远窗体的text文本框的内容也发生变化
完整的shell代码如下,主函数代码不变:
package src;
/*import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Button;*/
import org.eclipse.swt.*;
import org.eclipse.swt.widgets.*;
import org.eclipse.swt.events.*;
public class MyShell {
MyShell( ) {
Display display = new Display( );
Shell shell = new Shell(display);
final Shell shell2 = new Shell(display);
Button button=new Button(shell, 0);
final Text text=new Text(shell, 0);
shell.setSize(600,600);
shell.setText("中华人民共和国");
shell2.setSize(300,300);
shell2.setText("广西");
text.setBounds(100,30,80,50);
text.setText("我是中国人");
button.setBounds(300,300,50,50);
button.setText("中国");
shell.open( );
button.addMouseListener(new MouseAdapter(){
public void mouseDown(MouseEvent e){
//当用户点击按键的时候,显示信息
text.setText("我是好中国人");
shell2.open();
}
});
while(!shell.isDisposed( )){
if(!display.readAndDispatch())
display.sleep( );
}
display.dispose( );
}
}