透明 发表于 2015-1-18 11:11:15

JAVA教程之Swt经常使用控件中文教程

进而能拉拢大多数程序员用windows产品。并且从ASP.NETAJAX可以跨平台这一点上,间接证明了我们的推断,至少证明了微软做过这方面的研究。所以如果哪一天突然听说了.net可以跨平台了,那么请不要吃惊,如果这一天真的到来,java就到了真正和.net决战的时刻。因为不到万不得以的时候微软是不会推出跨平台的.net的,如果跨平台的.net还不足以对抗java的话,那么微软还剩的手段就是开源了,呵呵。教程|控件|中文  1、Eclipse中swt的设置
  倡议设置:jdk1.4.2和eclipse3.1
  在代码中挪用swt控件之前,起首创建一个项目,然后选择该项目标properties->JavaBuildPath,将standardWidgetToolKit到场到Library页傍边。以下图所示:
  接上去能够创建第一个eclipse小程序,新建一个class,而且在该class所对应的代码中输出以下程序,个中package和class称号依据实践情形来断定称号。
packagemypakage;
importorg.eclipse.swt.widgets.*;
importorg.eclipse.swt.*;
/*导进必要的类库*/
publicclassMyfrm1{
publicMyfrm1(){
super();
}
publicstaticvoidmain(String[]args){
Displaydisplay=newDisplay();
Shellshell=newShell(display);
/*shell为一个窗口对象*/
Labellabel=newLabel(shell,SWT.NONE);
label.setText("Hello,World!");/*创立一个标签对象而且设置题目笔墨*/
label.pack();
shell.pack();
shell.open();/*翻开并显现窗口*/
while(!shell.isDisposed())
if(!display.readAndDispatch())
display.sleep();/*在窗口没有烧毁之前,显现对象一向处于守候形态*/
display.dispose();/*不然,烧毁对象,开释对象所占有的资本*/
label.dispose();
}
}
  运转上述代码(run->debug->swtapplication)将发生以下所示的一个窗口
  2、button的利用
  按钮大概的范例有良多,比方:
SWT.BORDER含有边框的按钮
SWT.CHECK复选按钮
SWT.PUSH一般按钮
SWT.RADIO单选按钮
  3、Text的利用
  文本框的范例也有良多种选择,比方:
SWT.BORDER含有边框
SWT.READ_ONLY只读
  下图为包括按钮和文本框的窗口
  计划上述窗口所对应的代码为:
packagemypakage;
importorg.eclipse.swt.widgets.*;
importorg.eclipse.swt.SWT;
importorg.eclipse.swt.events.*;
importorg.eclipse.swt.layout.*;
publicclassMyfrm1{
publicMyfrm1(){
super();
}
publicstaticvoidmain(String[]args){
Displaydisplay=newDisplay();
Shellshell=newShell(display);
shell.setSize(300,200);
shell.setLayout(newRowLayout());
shell.setText("ButtonExample");
finalButtonbutton=newButton(shell,SWT.BORDER);
button.setText("ClickMe");
finalTexttext=newText(shell,SWT.BORDER);
shell.open();
while(!shell.isDisposed()){
if(!display.readAndDispatch())display.sleep();
}
display.dispose();
}
}
  假如想对控件的地位和巨细举行准确的设置,可使用setBounds(x,y,width,height)办法来代替shell.setLayout(newRowLayout())。比方:button.setBounds(80,80,90,20);
  button的监听及事务处置
  对按钮单击事务处置的代码:
button.addSelectionListener(newSelectionListener()
{
publicvoidwidgetSelected(SelectionEventevent)
{
text.setText("Noworries!");
}
publicvoidwidgetDefaultSelected(SelectionEventevent)
{
text.setText("Noworries!");
}
});
  将以上代码到场到shell.open之前,当点击按钮时发生以下效果:

  剖析:因为为button按钮增添了一个监听器,按钮时候处于被“监控”的形态,当按钮控件被选择(点击)既选择事务产生时,对文本控件举行赋值”Noworries”。
  依据监听事务的道理,计划以下程序,该程序可以取得鼠标的X坐标,显现在文本框中:
packagemypakage;
importorg.eclipse.swt.widgets.*;
importorg.eclipse.swt.SWT;
importorg.eclipse.swt.events.*;
importorg.eclipse.swt.layout.*;
publicclassMyfrm1{
publicMyfrm1(){
super();
}
publicstaticvoidmain(String[]args){
Displaydisplay=newDisplay();
Shellshell=newShell(display);
shell.setSize(300,200);
shell.setLayout(newRowLayout());
finalTexttext=newText(shell,SWT.SHADOW_IN);
shell.addMouseMoveListener(newMouseMoveListener()
{
publicvoidmouseMove(MouseEvente)
{
Integery=newInteger(e.x);/*将x坐标转换为Integer范例的对象*/
text.setText(y.toString());
}
});
shell.open();
while(!shell.isDisposed()){
if(!display.readAndDispatch())display.sleep();
}
display.dispose();
}
}
  监听体例:
ControlListener用于处置挪动和尺寸变更
FocusListener用于处置失掉核心和得到核心
KeyListener处置按键的输出
MouseListener,MouseMoveListener,MouseTrackListener对鼠标的举措举行处置
SelectionListener处置控件的选择举动(包含按钮的点击)
  注重:监听体例与其所可以处置的事务具有必定的联系关系性,既监听体例决意了所可以处置事务的品种,比方:
shell.addMouseListener(newMouseListener()
{
publicvoidmouseMove(MouseEvente)
{text.setText("mousemove");}
publicvoidmouseDoubleClick(MouseEvente)
{text.setText("mousedbclc");}
publicvoidmouseDown(MouseEvente)
{}
publicvoidmouseUp(MouseEvente)
{}
});
  你会发明在鼠标挪动时,text.setText("mousemove");一直不克不及够实行;而且mouseDown、mouseUp事务不克不及够省略,缘故原由就在于MouseListener只能处置mouseDoubleClick、mouseDown、mouseUp三类事务,并且这三类事务不克不及够分别。
  3、List控件
  List控件的款式包含:
SWT.BORDER含有边框
SWT.H_SCROLL含有程度转动条
SWT.V_SCROLL含有垂直转动条
SWT.SINGLE同意单选
SWT.MULTI同意复选
  若要创立一个含有从11个元素的List,能够经由过程以下代码来完成
finalListlist=newList(shell,SWT.SINGLE);
for(inti=0;i<=10;i++)
list.add("item"+i);
  以下实例可以判别List控件中所选择的选项,而且输入显现在把持台中:
packagemypakage;
importorg.eclipse.swt.widgets.*;
importorg.eclipse.swt.SWT;
importorg.eclipse.swt.events.*;
importorg.eclipse.swt.layout.*;
publicclassMyfrm1{
publicMyfrm1(){
super();
}
publicstaticvoidmain(String[]args){
Displaydisplay=newDisplay();
Shellshell=newShell(display);
shell.setText("ListExample");
shell.setSize(300,200);
shell.setLayout(newFillLayout(SWT.VERTICAL));
finalListlist=newList(shell,SWT.BORDER|SWT.MULTI|SWT.V_SCROLL);
for(intloopIndex=0;loopIndex<100;loopIndex++){
list.add("Item"+loopIndex);
}
list.addSelectionListener(newSelectionListener()
{
publicvoidwidgetSelected(SelectionEventevent)
{
intselections[]=list.getSelectionIndices();
StringoutText="";
for(intloopIndex=0;loopIndex<selections.length;
loopIndex++)outText+=selections+"";
System.out.println("Youselected:"+outText);
}
publicvoidwidgetDefaultSelected(SelectionEventevent)
{
int[]selections=list.getSelectionIndices();
StringoutText="";
for(intloopIndex=0;loopIndex<selections.length;loopIndex++)
outText+=selections+"";
System.out.println("Youselected:"+outText);
}
});
shell.open();
while(!shell.isDisposed()){
if(!display.readAndDispatch())display.sleep();
}
display.dispose();
}
}
  最终效果:
  Youselected:45678910
  剖析:list.getSelectionIndices()办法将会取得被选择项目标汇合,selections[]大概[]elections暗示静态一维数组。
  4、Menu控件
  创建菜单的一样平常步骤为:
  1、在创建菜单时,起首必要创建一个菜单栏,必要利用SWT.BAR属性
  MenumenuBar=newMenu(shell,SWT.BAR);
  2、在菜单栏的基本之上,创立下拉菜单的所对应的顶级菜单项,必要利用SWT.CASCADE属性
fileMenuHeader=newMenuItem(menuBar,SWT.CASCADE);
  fileMenuHeader.setText("&File");
  3、创建与顶级菜单项相干的下拉式菜单
  dropMenu1=newMenu(shell,SWT.DROP_DOWN);
  4、将顶级菜单项与下拉菜单联系关系
MenuHeader1.setMenu(dropMenu1);
  5、为下拉菜单增加子菜单项
dropitem1=newMenuItem(dropMenu1,SWT.PUSH);
dropitem1.setText("open");


  6、最初,在窗口中指定必要显现的菜单栏
shell.setMenuBar(menuBar);
  菜单的监听及事务
  参照按钮的监听和事务,计划以下程序,当点击File子菜单下的“open”时,在文本框中显现“clickopenmenu!”
dropitem1.addSelectionListener(newSelectionListener()
{
publicvoidwidgetSelected(SelectionEventevent)
{
text.setText("clickopenmenu!");
}
publicvoidwidgetDefaultSelected(SelectionEventevent)
{
text.setText("clickopenmenu!");
}
});
  5、利用工具栏toobar
  创建工具栏能够经由过程以下体例:ToolBartoolbar=newToolBar(shell,SWT.NONE);
  在工具栏的基本之上创立工具栏子按钮,而且设置子按钮的题目:
ToolItemitem1=newToolItem(toolbar,SWT.PUSH);
item1.setText("item1");
  比方:
ToolBartoolbar=newToolBar(shell,SWT.NONE);
ToolItemitem1=newToolItem(toolbar,SWT.PUSH);
item1.setText("item1");
ToolItemitem2=newToolItem(toolbar,SWT.PUSH);
item2.setText("item2");
  工具栏的监听及事务
  实例:创立一个监听对象,将该监听对象使用于每个按钮,终极来判别鼠标点击的是哪个按钮,最终效果以下。
Listenerlistener=newListener(){
publicvoidhandleEvent(Eventevent){
ToolItemitem=(ToolItem)event.widget;
Stringstring=item.getText();
text.setText("Youselected:"+string);}
};
item1.addListener(SWT.Selection,listener);
item2.addListener(SWT.Selection,listener);
item3.addListener(SWT.Selection,listener);
item4.addListener(SWT.Selection,listener);
  6、转动条slider的利用
  转动条分为有边框、垂直、程度三品种型,使用slider.setBounds办法能够指定转动条地点的地位。
  转动条所可以处置事务的包含:
SWT.ARROW_DOWN向下或向右按钮被点击
SWT.ARROW_UP向左或向上按钮被点击
SWT.DRAG滑块按钮被托动
SWT.END滑块抵达尽头
SWT.HOME滑块抵达出发点
SWT.PAGE_DOWN下方或右边的转动条被点击
SWT.PAGE_UP上方或左边的转动条被点击
  实例:依据滑块的地位挪动按钮地位
slider.addListener(SWT.Selection,newListener(){
publicvoidhandleEvent(Eventevent){
switch(event.detail){
caseSWT.ARROW_DOWN:button.setBounds(slider.getSelection(),0,20,10);
break;
caseSWT.ARROW_UP:button.setBounds(slider.getSelection(),0,20,10);
break;
caseSWT.DRAG:button.setBounds(slider.getSelection(),0,20,10);
break;
caseSWT.END:button.setBounds(slider.getSelection(),0,20,10);
break;
caseSWT.HOME:button.setBounds(slider.getSelection(),0,20,10);
break;
caseSWT.PAGE_DOWN:button.setBounds(slider.getSelection(),0,20,10);
break;
caseSWT.PAGE_UP:button.setBounds(slider.getSelection(),0,20,10);
break;
}
}
});
  7、树形控件Tree
  树形控件利用的办法为,起首创立一个Tree范例的对象,其次在该对象的基本之上持续扩大节点,和扩大节点的子节点。
  finalTreetree=newTree(shell,SWT.BORDER);
  能够使用tree.setSize办法来改动树形控件的巨细。在创立节点时,必要指明该节点所依附的父节点的称号,如TreeItemitem0=newTreeItem(tree,0);,那末item0将成为tree对象中的0级(顶级)节点。
  以下程序将在tree对象的基本之上发生9个节点:
finalTreetree=newTree(shell,SWT.BORDER);
tree.setSize(290,290);
for(intloopIndex1=2000;loopIndex1<=2008;loopIndex1++){
TreeItemitem0=newTreeItem(tree,0);
item0.setText("Year"+loopIndex1);
}
  在上述实例的基本上为每个0级节点的基本上扩大出12个节点:
for(intloopIndex1=2000;loopIndex1<=2008;loopIndex1++){
TreeItemitem0=newTreeItem(tree,0);
item0.setText("Year"+loopIndex1);
for(intloopIndex2=1;loopIndex2<=12;loopIndex2++){
TreeItemitem1=newTreeItem(item0,0);
item1.setText("Month"+loopIndex2);
}
}
  8、对话框dialog
  对话框是一个依托于主窗体的子窗体,如图所示。
  比方:当在主窗体中点击按钮时,弹出一个对话框dialog,当封闭对话框时按钮显现“dialogisdisposed”
Displaydisplay=newDisplay();
finalShellshell=newShell(display);
shell.setSize(300,200);
shell.setText("main");
finalButtonopener=newButton(shell,SWT.PUSH);
opener.setText("ClickMe");
opener.setBounds(20,20,50,25);
finalShelldialog=newShell(shell,SWT.APPLICATION_MODAL|
SWT.DIALOG_TRIM);
dialog.setText("dialog");
dialog.setBounds(10,10,50,60);
dialog.addDisposeListener(newDisposeListener(){
publicvoidwidgetDisposed(DisposeEvente){
opener.setText("dialogisdisposed");
}
});
ListeneropenerListener=newListener(){
publicvoidhandleEvent(Eventevent){
dialog.open();
}
};
opener.addListener(SWT.Selection,openerListener);
shell.open();
while(!dialog.isDisposed()){
if(!display.readAndDispatch())display.sleep();
}
while(!shell.isDisposed()){
if(!display.readAndDispatch())
display.sleep();
}
display.dispose();

但是对于JAVA技术类的学习,我觉得大课堂反而会影响自身独立思考的过程,因为上课的时候,老师讲课的速度很快为了不遗漏要点,通常会仔细的听,

小女巫 发表于 2015-1-20 16:16:56

你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢?

金色的骷髅 发表于 2015-1-29 12:56:30

在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。

再见西城 发表于 2015-2-1 19:50:23

是一种突破用户端机器环境和CPU

老尸 发表于 2015-2-7 14:38:17

你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢?

再现理想 发表于 2015-2-22 07:05:47

设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧

山那边是海 发表于 2015-3-6 23:22:30

应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展

乐观 发表于 2015-3-20 20:47:44

另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。
页: [1]
查看完整版本: JAVA教程之Swt经常使用控件中文教程