已阅读5页,还剩18页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
23第1章 Eclipse基础应用实例第1章 Eclipse基础应用实例Eclipse是一个开放源代码的软件开发项目,专注于为高度集成的企业开发提供一个全功能的具有商业品质的工业平台。它最初由IBM公司贡献,IBM公司提供了Eclipse代码基础。目前,由IBM牵头,Eclipse项目已经发展成为一个庞大的联盟,有150多家软件公司参与到Eclipse项目中。其中包括Borland、RationalSoftware、RedHat及Sybase。最近Oracle也计划加入到Eclipse联盟中。就其本身而言,Eclipse只是一个框架和一组服务,用于通过插件组件构建开发环境。Eclipse 拥有一个标准的插件集,核心插件是Platform、JDT和PDE。Platform是Eclipse的核心运行平台,截至本书写作时的最新版为3.1.1;JDT是Java开发工具;PDE是插件设计环境,用于设计自定义插件。正是这种基于插件的设计和开发方式,Eclipse受到了越来越多的开发者的欢迎。1.1 下载并安装EclipseEclipse是开放源代码的项目,可以免费下载。它的官方网站的网址是http:/www. 。官方网站提供Releases、Stable Builds、Integration Builds和Nightly Builds的下载。建议使用Releases或Stable Builds版本。Releases版本是Eclipses开发团队发布的主要发行版本,是经过测试的稳定版本,适合要求稳定而不需要最新改进功能的使用者选择。目前最新的Releases版本是Eclipse 3.2。Stable Builds版本是对大多数使用者足够稳定的版本,由开发团队将认为比较稳定的Integration Builds版本提升到Stable Builds而来,适合想使用Eclipse新功能的使用者选择。跟我做1安装JDK 1.5Eclipse是一个基于Java平台的开发环境,它本身也要运行在Java虚拟机上,还要使用JDK的编译器,因此必须首先安装JDK。(1)登录SUN的官方站点,下载JDK 1.5 Windows版。(2)安装JDK 1.5,可自行设定安装目录,如E:jdk15。(3)设置系统变量CLASSPATH。右击【我的电脑】,依次选择【属性】|【高级】|【环境变量】命令,弹出【环境变量】对话框,如图1-1所示。 图1-1 【环境变量】对话框(4)在【系统变量】中,单击【新建】按钮,弹出【新建系统变量】对话框,如图1-2所示。图1-2 新建系统变量(5)新建系统变量。在【变量名】文本框中输入“JAVA_HOME”,在【变量值】文本框中输入JDK安装路径,如“E:jdk15”,单击【确定】按钮。然后创建“CLASSPATH”系统变量,变量值为“.;E:jre15librt.jar”。(6)编辑“Path”系统变量。在【环境变量】对话框中选中“Path”系统变量,单击【编辑】按钮,弹出【编辑系统变量】对话框,在【变量值】文本框的最后加入“% JAVA_HOME %bin”。2安装Eclipse 3.1.1(1)登录Eclipse的官方站点,下载Eclipse安装包eclipse-SDK- 3.1.1-win32.zip。(2)将ZIP文件解压至自行设定的安装目录,如E:eclipse,Eclipse即安装完毕。%注意:本书中Eclipse安装目录均用%Eclipse%代替。1.2 安装语言包Eclipse提供了一个语言包的插件,用于国际化其开发环境。对于英文不好的读者或者初学者来说,中文版本的Eclipse可以显著提高学习效率,便于接受和使用Eclipse。在对Eclipse有了初步的认识之后,还是建议读者多使用英文版Eclipse,这样对以后的进一步学习和使用有好处。跟我做(1)下载语言包插件。登录Eclipse语言包下载网站,网址是 /eclipse/downloads/drops/L-3.1.1_Language_Packs-200510051300/index.php。选择SDK Language Packs中的NLpack1,下载NLpack1-eclipse-SDK-3.1.1a-win32.zip。(2)将ZIP文件解压至Eclipse安装路径,即可完成语言包的安装。%注意:如果Eclipse环境不能完全汉化,可将%Eclipse%configurationorg.eclipse.update文件夹删除,重新启动Eclipse即可。如果想恢复英文环境,可增加-NL en_US启动参数。1.3 第一个Java实例这是一个简单的Java程序,从命令行输入两个字符串参数,在程序中将其合并成一个字符串,并在控制台输出。本实例的目的是为了熟悉Eclipse环境,掌握编写Java程序的流程,掌握设置命令行参数的方法,以及如何在Eclipse中运行Java程序。1.3.1 新建Java项目(1)启动Eclipse。右击%Eclipse% eclipse.exe,依次选择【发送到】|【桌面快捷方式】命令。(2)双击桌面上的Eclipse快捷方式,启动Eclipse。如Eclipse启动不成功,可增加虚拟机参数-vm %JAVA_HOME%jrebinjavaw.exe。(3)单击【窗口】菜单,依次选择【打开透视图】|【Java】命令,打开Java透视图。(4)单击【文件】菜单,依次选择【新建】|【项目】命令,弹出【新建项目】对话框。(5)选择【Java项目】,单击【下一步】按钮。(6)在【项目名】文本框中输入“JavaApplication”,其他选项保持默认值,单击【完成】按钮。1.3.2 配置构建路径为了让Java源文件和编译后生成的字节码文件分开存放,需要配置构建路径。(1)选择【窗口】|【首选项】命令,弹出【首选项】对话框。(2)依次选择左侧列表的【Java】|【构建路径】,选中窗口中的文件夹选项,单击【确定】按钮,保存设置,如图1-3所示。图1-3 配置构建路径1.3.3 新建Java类(1)右击“src”文件夹,依次选择【新建】|【包】命令,弹出【新建Java包】对话框。在【名称】文本框中输入“net.chapter1”,单击【完成】按钮。(2)右击“net.chapter1”包,依次选择【新建】|【类】命令,弹出【新建Java类】对话框。在【名称】文本框中输入“StringJoin”,单击【完成】按钮。(3)编写程序代码。如下:package net.chapter1;public class StringJoin public static void main(String args) /对输入的命令行参数进行判断,如果为空指针或者参数的数量不是2个,则输出提示信息后返回 if (args = null | args.length != 2) System.out.println(请输入两个字符串参数!); return; /在控制台打印输入的参数 System.out.println(您输入的字符串分别是: + args0 + 和 + args1 + ); /将两个字符串进行连接 String joinedString = args0 + args1; /在控制台打印连接后的字符串 System.out.println(连接后的字符串是: + joinedString); 1.3.4 设置命令行参数(1)右击“StringJoin.java”文件,依次选择【运行方式】|【运行】命令,弹出【运行】对话框。(2)在左侧【配置】列表中选择【Java应用程序】,单击【新建】按钮,生成“StringJoin”项。(3)选择右侧的【自变量】选项卡,在【程序自变量】文本框中输入命令行参数“hello”和“java”,如图1-4所示。图1-4 设置命令行参数1.3.5 运行实例在图1-4中,单击【运行】按钮运行Java程序。输出结果如图1-5所示。图1-5 第一个Java程序运行结果1.4 Java应用程序实例本节将通过3个更详细的Java应用实例,进一步加深对Eclipse编程方式的理解。选择的题材包括排序算法、数字游戏、使用Java实现FTP功能。1.4.1 排序算法的Java实现排序问题应该是数据结构中的经典问题。前人总结出了多种排序算法,不同的算法都可以通过不同的语言描述实现。本实例将实现冒泡排序、插入排序、选择排序的Java版。实例运行后,控制台输出如图1-6所示。图1-6 3种排序的输出3种排序结果一致,用时极短,均为0。跟我做(1)右击1.3节创建的“net.chapter1”包,依次选择【新建】|【类】命令,弹出【新建Java类】对话框。在【名称】文本框中输入“SortAlgorithm”,单击【完成】按钮。(2)编写程序代码。q 冒泡排序基本算法思想:从前到后扫描序列,比较相邻两个项目的大小,若发现逆序进行交换,最后使最大者换到序列的最后。然后再从后到前扫描剩下的序列,比较相邻两个项目的大小,若发现逆序则进行交换,最后使最小者换到序列的最前面。对剩下的序列重复上述过程,直到剩下的序列为空时止。bubbleSort方法实现了冒泡排序。如下:public class SortAlgorithm private void bubbleSort(int numlist) int out, in;/ 从后到前,从倒数第二项到第二项扫描数列for (out = numlist.length - 1; out 1; out-) / 从第一项到第out项扫描数列for (in = 0; in numlistin + 1) int temp = numlistin;numlistin = numlistin + 1;numlistin + 1 = temp;q 插入排序基本算法思想:每次将一个待排序的数据元素插入到前面已经排好序的数列中的适当位置,使数列依然有序,直到待排序数据元素全部插入完为止。insertSort方法实现了插入排序。如下:private void insertSort(int numlist) int in, out;/ 从out处分开数列for (out = 1; out 0 & numlistin - 1 = temp) / 当发现数列值大于待排序的数据时numlistin = numlistin - 1; / 数列向右移一位-in; / 指针向左移一位numlistin = temp; / 插入待排序的数据q 选择排序基本算法思想:首先找出最小的元素,然后把这个元素与第一个元素互换,这样值最小的元素就放到了第一个位置。接着,再从剩下的元素中找值最小的,把它和第二个元素互换,使得第二小的元素放在第二个位置上,依此类推,直到所有的值由小到大排列为止。selectionSort方法实现了选择排序。如下:private void selectionSort(int numlist) int out, in, min;/ 从第一项到倒数第二项扫描数列for (out = 0; out numlist.length - 1; out+) min = out; / 将out项设为最小值/ 从第二项到最后项扫描数列for (in = out + 1; in numlist.length; in+)/ 当发现第in项小于最小值if (numlistin numlistmin)min = in; / 将第in项作为最小值/ 将out项与最小值进行交换int temp = numlistout;numlistout = numlistmin;numlistmin = temp;display方法向控制台输出数列。如下:private void display(int numlist) for (int j = 0; j numlist.length; j+)System.out.print(numlistj + );System.out.println();main方法向控制台输出结果,首先输出原序,然后依次输出各种排序结果和排序时间。如下:public static void main(String args) SortAlgorithm sortAlgorithm = new SortAlgorithm();int numlist = new int 45, 67, 199, -4, 9, 123, 7, 24, 66, 18 ;/ 待排序数列/ 打印待排序数列System.out.print(原序为:);sortAlgorithm.display(numlist);System.out.println();long begin = System.currentTimeMillis();/ 排序开始时间,调用系统的当前时间sortAlgorithm.bubbleSort(numlist);/ 执行冒泡排序long end = System.currentTimeMillis();/ 排序结束时间,调用系统的当前时间System.out.println(冒泡排序用时为: + (end - begin);/ 排序用时/ 打印排序结果System.out.print(排序后:);sortAlgorithm.display(numlist);System.out.println();begin = System.currentTimeMillis();/ 排序开始时间sortAlgorithm.insertSort(numlist);/ 执行插入排序end = System.currentTimeMillis();/ 排序结束时间System.out.println(插入排序用时为: + (end - begin);/ 排序用时/ 打印排序结果System.out.print(排序后:);sortAlgorithm.display(numlist);System.out.println();begin = System.currentTimeMillis();/ 排序开始时间sortAlgorithm.selectionSort(numlist);/ 执行选择排序end = System.currentTimeMillis();/ 排序结束时间System.out.println(选择排序用时为: + (end - begin);/ 排序用时/ 打印排序结果System.out.print(排序后:);sortAlgorithm.display(numlist);(3)运行实例。右击“SortAlgorithm.java”文件,依次选择【运行方式】|【Java应用程序】命令。1.4.2 猜数字游戏游戏随机给出一个0100(包括0和100)之间的数字,然后让游戏者猜是什么数字。游戏者可以随便猜一个数字,游戏会提示太大还是太小,从而缩小结果范围。经过几次猜测与提示后,最终推出答案。实例运行后,控制台输出如图1-7所示。图1-7 猜数字游戏玩法跟我做(1)右击1.3节创建的“net.chapter1”包,依次选择【新建】|【类】命令,弹出【新建Java类】对话框。在【名称】文本框中输入“GuessNumber”,单击【完成】按钮。(2)编写程序代码。代码如下:public class GuessNumber public static void main(String args) /新建一个随机数生成器 Random random = new Random(); /生成一个0100之间的整数,方法nextInt(int n)生成在0(包括)和n(不包括)之间均匀分布的int值 int randomNumber = random.nextInt(101); /记录游戏者所猜数字 int guessedNumber = -1; /通过输入流取得游戏者从控制台输入的数字 BufferedReader input = new BufferedReader(new InputStreamReader( System.in); int counter = 0;/记录游戏者猜测的次数。 System.out.println(); System.out.println(请输入0到100之间的整数:);以下循环进行猜数字。如果输入的数字不在0100的范围内,则提示输入值无效,再次输入。如果输入的不是数字,则抛出异常。代码如下: while (guessedNumber != randomNumber) try /获取游戏者的输入 guessedNumber = Integer.parseInt(input.readLine(); if(guessedNumber100) System.out.println(请输入一个0100之间的整数:); counter+;/游戏者猜测的次数加一 continue; catch (NumberFormatException e) /如果游戏者输入的不是一个合法的整数,则让他重新输入 System.out.println(请输入一个0100之间的整数:); counter+;/游戏者猜测的次数加一 continue; catch (IOException e) System.out.println(程序发生异常错误将被关闭!); e.printStackTrace(); /对玩家的输入进行判断 if (guessedNumber randomNumber) System.out.println(您输入的数字大了,请再次输入:); if (guessedNumber randomNumber) System.out.println(您输入的数字小了,请再次输入:); counter+;/游戏者猜测的次数加一 System.out.println(答案正确。您共猜测+counter+次。); (3)运行实例。右击“GuessNumber.java”文件,依次选择【运行方式】|【Java应用程序】命令。1.4.3 通过FTP传递文件本实例是一个使用Java实现FTP命令的程序,可从远程FTP服务器下载文件。程序中用到了Apache的Commons Net技术。它是一个用于操作Internet基础协议(Finger,Whois,TFTP,Telnet,POP3,FTP,NNTP以及SMTP)的底层API。Commons Net包不仅支持对各种低层次协议的访问,而且还提供了一个高层的抽象,使得开发者不再需要直接面对各种协议的Socket级的低层命令。本例只使用其FTP协议。跟我做(1)下载Commons Net包。可到Apache网站下载最新的commons-net-1.4.1.jar,网址为/site/downloads/downloads_commons-net.cgi。(2)右击“JavaApplication”项目,依次选择【新建】|【文件夹】命令,弹出【新建文件夹】对话框。在【文件夹名称】文本框中输入“lib”,单击【完成】按钮。将commons-net-1.4.1.jar复制到lib文件夹中。(3)右击“JavaApplication”项目,选择【属性】命令,弹出【JavaApplication的属性】对话框。选择【库】选项卡,单击【添加Jar】按钮,弹出【选择JAR】对话框,如图1-8所示。选中“commons-net-1.4.1.jar”,单击【确定】按钮。返回【JavaApplication的属性】对话框,单击【确定】按钮。图1-8 【选择JAR】对话框(4)右击“net.chapter1”包,依次选择【新建】|【类】命令,弹出【新建Java类】对话框。在【名称】文本框中输入“FTPUtil”,单击【完成】按钮。(5)编写程序代码。如下:public class FTPUtil public static void main(String args) /通过FTPClient的对象模拟用户访问FTP服务器 FTPClient ftpClient = new FTPClient(); String ftpServer = 4; /FTP服务器 String remoteFile = /opt/user/readme.txt; /远程文件,复制的目标 String localFile = E:tempreadme.txt; /本地文件,复制的目的文件 String user = abc;/用户名 String password = edf;/密码 try ftpClient.connect(ftpServer);/连接FTP服务器 System.out.println(Connected to + ftpServer + .);int reply = ftpClient.getReplyCode();/得到回复码/如果未能正常连接,退出程序 if (!FTPReply.isPositiveCompletion(reply) System.out.println(FTP server refused connection!); System.exit(1); /通过用户名和密码登录FTP服务器,如果登录不成功,退出程序 if (!ftpClient.login(user, password) ftpClient.logout(); System.out.println(I cant login!); System.exit(1); /定义文件输出流,FTPClient将把远程文件以流的方式输出,并写到本地文件 OutputStream output = new FileOutputStream(localFile); ftpClient.retrieveFile(remoteFile, output); /如果传输成功,返回true output.close(); /关闭流 ftpClient.logout(); /推出登录 catch (IOException e) System.err.println(e); finally /断开FTP连接 if (ftpClient.isConnected() try ftpClient.disconnect(); catch (IOException f) System.err.println(e); (6)运行程序。右击“FTPUtil.java”文件,依次选择【运行方式】|【Java应用程序】命令。如果程序运行成功,将会把FTP服务器的/opt/user/目录下的readme.txt文件复制到本地E:temp目录下。1.5 SWT界面开发实例SWT(StandardWidgetToolkit,标准窗口小部件工具包)本身仅仅是Eclipse组织为了开发Eclipse IDE环境所编写的一组底层图形界面 API。或是无心插柳,或是有意为之,至今为止,SWT在性能和外观上都超越了SUN公司提供的AWT和SWING。SWT已经十分稳定,它最大化了操作系统的图形构件API。也就是说,只要操作系统提供了相应图形的构件,SWT就可以应用JNI技术调用它们,只有那些操作系统中不提供的构件,SWT才自己去做一个模拟的实现。1.5.1 使用Shell创建窗口本小节将创建第一个SWT程序(注意,本章的例子主要针对Windows平台,其他操作系统大同小异)。本实例是一个简单的窗口,在窗口中间显示“你好,SWT!”字样。通过学习和运行本实例,读者将掌握配置SWT API,编写和运行SWT程序的方法。图1-9 简单的SWT窗口Display负责监管GUI的资源并管理和操作系统的通信,它不仅要关注窗口是如何显示、移动和重画的,还要确保诸如鼠标点击、键盘敲击等事件送达小部件并去处理它们。Display类不是可见的。Shell类扮演着GUI主窗口的角色。一个Shell实例是一个可视化的应用,对主窗口的打开、激活、最大化、最小化和关闭保持追踪。Shell类的主函数为整合在GUI内的容器、小部件和事件提供了一个通用的接入点。从这一点讲,Shell的作用像是这些组件的父类。本例的运行效果是一个简单的SWT窗口,如图1-9所示。跟我做本实例主要包括3部分,下面依次进行讲解。1新建SWT项目(1)单击【文件】菜单,依次选择【新建】|【项目】命令,弹出【新建项目】对话框。(2)选择【Java项目】,单击【下一步】按钮。(3)在【项目名】文本框中输入“SWT”,其他选项保持默认值,单击【完成】按钮。2引入SWT包要编写SWT程序,需要引入SWT的jar包。Eclipse组织并不提供单独的SWT包下载。必须下载完整的Eclipse开发环境才能得到SWT包。SWT是作为Eclipse开发环境的一个插件形式存在。此插件名为$ECLIPSEpluginsorg.eclipse.swt.win32.win32.x86_3.1.1.jar。(1)右击“SWT”项目,选择【属性】命令,弹出【SWT的属性】对话框。(2)在左侧列表中选择【Java构建路径】选项,在右侧单击【添加变量】按钮,弹出【新建变量路径条目】对话框。(3)单击【配置变量】按钮,弹出【首选项】对话框。(4)单击【新建】按钮,弹出【新建变量条目】对话框。(5)在【名称】文本框中输入“SWT_LIB”,单击【文件】按钮,弹出【选择Jar】对话框,选择$ECLIPSEpluginsorg.eclipse.swt.win32.win32.x86_3.1.1.jar。单击【打开】按钮,返回【新建变量条目】对话框,依次单击【确定】按钮。此时,SWT_LIB变量已放入【构建路径上的JAR和类文件夹】列表框中,如图1-10所示。图1-10 SWT_LIB的属性配置3编写程序(1)右击“src”文件夹,依次选择【新建】|【包】命令,弹出【新建Java包】对话框。在【名称】文本框中输入“net.chapter4”,单击【完成】按钮。(2)右击“net.chapter4”包,依次选择【新建】|【类】命令,弹出【新建Java类】对话框。在【名称】文本框中输入“SimpleForm”,单击【完成】按钮。(3)编写程序代码。代码如下:public class SimpleForm public static void main(String args) Display display = new Display();/创建Display实例 Shell shell = new Shell(display);/创建Shell实例shell.setText(窗口); /设置窗口的显示标签shell.setBounds(200,200,500,350);/设置shell的显示范围/设置窗口布局FormLayout layout = new FormLayout(); layout.marginHeight = 50; layout.marginWidth = 50; shell.setLayout(layout);/创建标签,用于显示你好,SWT!字样 Label helloLabel=new Label(shell,SWT.CENTER); /采用SWT.CENTER样式,即居中显示 helloLabel.setText(你好,SWT!); shell.pack(); /以紧凑方式显示窗口并自动调节大小 shell.open(); /打开shell,类似于打开窗口 /开始事件处理循环,直到用户关闭窗口 while (!shell.isDisposed() if (!display.readAndDispatch() display.sleep(); display.dispose(); 4配置本机图形库并运行程序用SWT编写的GUI与其所运行的平台的外观一致,速度也与本机程序相仿。这是因为SWT调用了操作系统自带的图形库,因此在运行程序时需指出本机图形库的位置。SWT本机图形文件名一般为swt-win32-nnnn.dll,这里的nnnn代表4位整数,它们位于$ECLIPSEpluginsorg.eclipse.swt.win32. win32.x86_3.1.1.jar包中。为了确保这些库文件能被程序所用,可将本机图形库放进java.library.path变量所包含的任何目录中。(1)解压org.eclipse.swt.win32.win32.x86_3.1.1.jar至任意目录,如E:swt目录。(2)右击“SimpleForm.java”文件,依次选择【运行方式】|【运行】命令,弹出【运行】对话框。选择左侧的SWT应用程序,单击【新建】按钮,自动新建SimpleForm项。在右侧选择【自变量】选项卡,在【VM自变量】文本框中输入“-Djava.library.path=E:swt”,如图1-11所示。图1-11 java.library.path参数配置(3)单击【运行】按钮,运行SimpleForm程序。1.5.2 简单的用户密码验证器本小节实例将实现一个简单的用户密码验证器,如果输入用户名“abc”、密码“abc”,窗口将显示“通过”字样,否则显示“不通过”。SWT 2.0提供了一种新的标准布局:FormLayout。FormLayout通过定义组件4个边的“粘贴”位置来排列组件,被引用的相对的组件可以是父组件,也可以是同一容器中的其他组件。SWT的事件处理模型和AWT类似,事件的处理委托给外部实体进行,实现了将事件源和监听器分开,通过addXXXXListener方法向组件注册监听器。本例将使用SelectionAdapter处理按钮单击事件。程序的运行效果分别如下。(1)用户密码验证初始窗口如图1-12所示。(2)当输入用户名“abc”、密码“abc”时,窗口显示“通过”字样,如图1-13所示。(3)当输入其他的用户名和密码时,窗口显示“不通过”字样,如图1-14所示。 图1-12 用户密码验证初始窗口 图1-13 用户名密码通过验证 图1-14 用户名密码未能通过验证跟我做1新建Java文件UserPassword.java右击包名“net.chapter5”,依次选择【新建】|【类】命令,在弹出的新类对话框中输入类名UserPassword,单击【完成】按钮。2编写代码首先创建用于界面显示的控件,并设置FormLayout布局。代码如下:public class UserPassword Display display = new Display();/创建Display实例 Shell shell = new Shell(display);/创建Shell实例 Text nameText; /“用户名”文本框 Text passText; /“密码”文本框 Button submit; /“确定”按钮 Button cancel; /“取消”按钮Label resultLabel; /显示验证结果标签/用户密码验证方法的实现 public UserPassword() /设置FormLayout布局,定义空白边 FormLayout layout = new FormLayout(); FormData data = new FormData(); /定义具体的布局数据 layout.marginHeight = 20; /设置空白边高度 layout.marginWidth = 30; /设置空白边宽度 shell.setLayout(layout); shell.setText(用户密码验证); Label nameLabel = new Label(shell, SWT.NONE); /“用户名”标签 nameLabel.setText(用户名); /设置标签内容 /定义name标签的位置。它的顶边离父组件(窗口shell)的空白边距离是父组件clientAr(除空白边以外的空间)高度的15%,偏移的点数为0 data.top = new FormAttachment(15, 0); nameLabel.setLayoutData(data);定义name文本框的位置。它的顶边在nameLabel标签的中心位置,左边距nameLabel标签的右边有10个点。代码如下: nameText = new Text(shell, SWT.SINGLE | SWT.BORDER); data = new FormData(); data.top = new FormAttachment(nameLabel, 0, SWT.CENTER); data.left = new FormAttachment(nameLabel, 10, SWT.RIGHT); nameText.setLayoutData(data);定义passLabel标签的位置。它的顶边距nameLabel标签的底边有10个点数的偏移。代码如下: Label passLabel = new Label(shell, SWT.NONE); passLabel.setText(密码); data = new FormData(); data.top = new FormAttachment(nameLabel, 10, SWT.BOTTOM); passLabel.setLayoutData(data);定义pass文本输入的位置。它的顶边在passLabel标签的中心位置,左边与nameText文本框的左边对齐。代码如下: passText = new Text(shell, SWT.SINGLE | SWT.BORDER); passText.setEchoChar(*);/输入字符显示为* passText.setTabs(2); data = new FormData(); data.top = new FormAttachment(passLabel, 0, SWT.CENTER); data.left = new FormAttachment(nameText, 0, SWT.LEFT); passText.setLayoutData(data); /两个button由一个使用RowLayout的组件来设置 Composite towButton = new Composite(shell, SWT.NONE); RowLayout rowLayout = new RowLayout(); rowLayout.justify = true; towButton.setL
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 石脑油加工工班组考核能力考核试卷含答案
- 公司林木采伐工岗位设备安全技术规程
- 糖汁蒸发工岗位设备安全技术规程
- 室内木装修工岗前设备巡检考核试卷含答案
- 2025-2026学年北师大版(2022)小学劳动技术二年级(上册)期末测试卷附答案
- 节气营销与新媒体
- 教学模式革新
- 专题02 二次函数【知识梳理+解题方法+专题过关】-2025-2026学年九年级数学上学期期中期末挑战满分冲刺卷(人教版)(解析版)
- 北师大版八年级物理上册 第三章《声现象》单元测试卷及答案
- 2025-2031全球与中国果泥市场现状及未来发展趋势 Sample RXR
- GB/T 21198.6-2007贵金属合金首饰中贵金属含量的测定ICP光谱法第6部分:差减法
- 有限空间安全教育培训制度
- 第4章逆向物流网络规划与设计课件
- 过敏性休克的急救(共31张PPT)
- 国外汉语课堂教学案例课件
- DB32T 3753-2020 江苏省装配式建筑综合评定标准
- 二尖瓣峡部的消融和验证
- 科研项目申请书撰写技巧与形式审查要点(51张)课件
- 英语presentation-墨西哥亡灵节
- 专利布局PPT幻灯片课件(PPT 33页)
- GB∕T 40853.1-2021 高频感性元件 电特性及其测量方法 第1部分:纳亨级片
评论
0/150
提交评论