µÚ4Õ SWTͼÐÎÓû§½çÃæ
±¾ÕÂÒªµã
1£® SWT³ÌÐò¿ª·¢²½Öè¡£ 2£® SWT³£ÓÃ×é¼þµÄʹÓᣠ3£® SWTµÄ²¼¾Ö¡£ 4£® SWTµÄʼþ´¦Àí¡£ 5£® SWT Designer¼ò½é¡£ ±¾ÕÂÄѵã
1£® SWT³£ÓÃ×é¼þµÄʹÓᣠ2£® SWTµÄ²¼¾Ö¡£ 3£® SWTµÄʼþ´¦Àí¡£
4.1SWT/JFace¼ò½é
SWT£¨Standard Widget Toolkit£©¼´±ê׼С´°¿Ú¹¤¾ßÏ䣬ÊÇIBM¹«Ë¾ÍƳöµÄÒ»ÖÖÔÚEclipseÖÐʹÓõļ¯³É¿ª·¢»·¾³£¬SWTÌṩ¿ÉÒÆÖ²µÄAPI£¬²¢Óëµ×²ã±¾»úOS GUIƽ̨½ôÃܼ¯³É£¬ËüÊÇÒ»¸öÓë±¾µØ´°¿Úϵͳ¼¯³ÉÔÚÒ»ÆðµÄС²¿¼þ¼¯ºÍͼÐο⡣SWTÓÉJNI£¨Java Native Interface£¬Java±¾»ú½Ó¿Ú£©µ÷ÓòÙ×÷ϵͳµÄÄÚ²¿API£¬Òò´ËÔËÐÐËٶȿ죬Äܹ»»ñµÃÓë²Ù×÷ϵͳµÄÄÚ²¿Ó¦ÓóÌÐòÏàͬµÄÍâ¹Û¡£
JFaceÊÇÒ»¸öÓû§½çÃæ¹¤¾ßÏ䣬ҲÊÇÒ»¸öÒ×Óᢹ¦ÄÜÇ¿´óµÄͼÐΰü£¬Ëü¼ò»¯Á˳£¼ûµÄͼÐÎÓû§½çÃæµÄ±à³ÌÈÎÎñ¡£SWTºÍJFace¶¼ÊÇEclipseƽ̨ÉϵÄÖ÷Òª×é¼þ¡£JFaceÊÇÔÚSWTµÄ»ù´¡ÉÏ´´½¨µÄ£¬µ«JFace²¢²»ÄÜÍêÈ«¸²¸ÇSWTµÄ¹¦ÄÜ£¬JFaceºÍSWTµÄ¹ØÏµÈçͼ4.1Ëùʾ¡£ÓÉÓÚJFaceµÄ¹¦ÄܸüÇ¿´ó£¬Òò´Ë×öͼÐνçÃæ¿ª·¢Ê±Ò»°ãÓÅÏÈÑ¡ÓÃJFace¡£
ͼ4.1 JFaceºÍSWTµÄ¹ØÏµ
4.1.1 SWT³ÌÐò¿ª·¢²½Öè
ÔÚeclipseµÄpluginsĿ¼Ï£¬ÕÒµ½Îļþorg.eclipse.swt.win32.win32.x86_3.2.1.v3235.jar£¬ÎļþÃûÖÐÖÐ3.2.1ÊÇeclipseµÄ°æ±¾ºÅ£¬v3235ÊÇSWTµÄÐòÁкţ¬²»Í¬µÄeclipse°æ±¾ÕâÁ½¸öÊý×ÖÒ²²»Í¬¡£ÔÚDOS״̬Ï£¬ÓÃjarÃüÁ¸ÃÎļþ½âѹ£¬ÃüÁî¸ñʽÈçÏ£º
jar xf org.eclipse.swt.win32.win32.x86_3.2.1.v3235.jar
¸ÃÃüÁָ¶¨µÄÎļþorg.eclipse.swt.win32.win32.x86_3.2.1.v3235.jar½âѹµ½µ±Ç°Ä¿Â¼Ï¡£½âѹºóµÃµ½ËĸöDLLÎļþ£ºswt-win32-3235.dll£¬swt-awt-win32-3235.dll£¬swt-gdip-win32-3235.dllºÍswt-wgl-win32-3235.dll¡£ÕâËĸöÎļþ¾ÍÊÇSWTµÄÔÉú¿âÎļþ¡£ÔÉú¿âÎļþΪSWTͨ¹ýJNI·ÃÎÊwindows±¾µØAPIÌṩÁ˽ӿڣ¬ÎªÊ¹Java³ÌÐòÔÚÆô¶¯Ê±Äܹ»·ÃÎÊÕâЩÎļþ£¬¿ÉÒÔͨ¹ýÒÔÏ·½·¨½øÐÐÉèÖãº
·½·¨Ò»£º½«ÕâËĸöDLLÎļþ¸´ÖƵ½jreµÄbinĿ¼Ï¡£
·½·¨¶þ£ºÉèÖû·¾³±äÁ¿£¬ÔÚPATHÖмÓÈëÕ⼸¸ödllÎļþËùÔÚµÄĿ¼¡£ ·½·¨Èý£ºÔÚeclipseµÄJavaÏîÄ¿Öе¼ÈëÔÉú¿âÎļþ¡£²Ù×÷·½·¨ÊÇ£º
ÔÚeclipseµÄ°ü×ÊÔ´¹ÜÀíÆ÷ÖУ¬ÓÒµ¥»÷ÏîÄ¿Ãû¡úµ¼Èë¡ú³£¹æ¡úÎļþϵͳ¡úÏÂÒ»²½¡úä¯ÀÀ¡úÑ¡ÔñDLLÎļþËùÔÚĿ¼¡úÈ·¶¨¡ú¹´Ñ¡DLLÎļþ¡úÍê³É¡£
µ¼ÈëSWTµÄÔÉú¿âÎļþºó£¬»¹ÒªÔÚeclipseµÄJavaÏîÄ¿ÖÐÅäÖù¹½¨Â·¾¶£¬Ìí¼ÓÍⲿJAR£¬½«Îļþorg.eclipse.swt.win32.win32.x86_3.2.1.v3235.jar¼ÓÈëµ½ÏîÄ¿ÖУ¬²Ù×÷·½·¨ÊÇ£º
ÔÚeclipseµÄ°ü×ÊÔ´¹ÜÀíÆ÷ÖУ¬ÓÒµ¥»÷ÏîÄ¿Ãû¡ú¹¹½¨Â·¾¶¡úÅäÖù¹½¨Â·¾¶¡ú¿â£¨L£©¡úÌí¼ÓÍⲿJAR¡úÔÚeclipseµÄpluginsÎļþ¼ÐÖÐÕÒµ½¸ÃjarÎļþ¡ú´ò¿ª¡úÈ·¶¨¡£
Àý4.1 ÔÚJavaÓ¦ÓóÌÐòÖÐʹÓÃSWTµÄ×é¼þ¡£ ²Ù×÷²½Ö裺
¢Ù н¨Ò»¸öJavaÏîÄ¿£¬ÏîÄ¿ÃûΪ£ºsample4_1¡£ ¢Ú ²ÉÓ÷½·¨ÈýÔÚÏîÄ¿Öе¼ÈëÔÉú¿âÎļþ¡£
¢Û ÅäÖù¹½¨Â·¾¶£¬½«org.eclipse.swt.win32.win32.x86_3.2.1.v3235.jar¼ÓÈëµ½ÏîÄ¿ÖС£eclipse°ü×ÊÔ´¹ÜÀíÆ÷¿ÉÒÔ¿´µ½µ¼ÈëµÄÔÉú¿âÎļþºÍÒýÈëµÄjarÎļþ£¬Èçͼ4.2Ëùʾ¡£
¢Ü ÔÚÏîÄ¿ÖÐн¨Ò»¸öÀ࣬ÎļþÃûΪHelloSWT.java¡£ ¢Ý ÔÚÀàÎļþÖÐдÈë´úÂë¡£
ͼ4.2 °ü×ÊÔ´¹ÜÀíÆ÷ ͼ4.3 ³ÌÐòÔËÐнá¹û HelloSWT.javaÎļþÄÚÈÝÈçÏ£º
package edu.ch4;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Text; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.graphics.*; class HelloSWT {
public static void main(String[] args) {
Display display=new Display();//´´½¨Ò»¸ödisplay¶ÔÏó¡£ Shell shell=new Shell(display);//shellÊdzÌÐòµÄÖ÷´°Ìå
} }
shell.setLayout(null); //ÉèÖÃshellµÄ²¼¾Ö·½Ê½
Text hello=new Text(shell,SWT.MULTI); //ÉùÃ÷Ò»¸ö¿ÉÒÔÏÔʾ¶àÐÐÐÅÏ¢µÄÎı¾¿ò shell.setText(\Ó¦ÓóÌÐò\); //ÉèÖÃÖ÷´°ÌåµÄ±êÌâ shell.setSize(200,100); //ÉèÖÃÖ÷´°ÌåµÄ´óС
Color color=new Color(Display.getCurrent(),255,255,255);//ÉùÃ÷ÑÕÉ«¶ÔÏó shell.setBackground(color); //ÉèÖô°ÌåµÄ±³¾°ÑÕÉ«
hello.setText(\ÄãºÃ£¬SWTÊÀ½ç£¡\);//ÉèÖÃÎı¾¿òÐÅÏ¢ hello.pack(); //×Ô¶¯µ÷ÕûÎı¾¿òµÄ´óС //shell.pack(); //×Ô¶¯µ÷ÕûÖ÷´°ÌåµÄ´óС shell.open(); //´ò¿ªÖ÷´°Ìå
while(!shell.isDisposed()){ //Èç¹ûÖ÷´°ÌåûÓйرÕÔòһֱѻ· }
display.dispose(); //Ïú»Ùdisplay
if(!display.readAndDispatch()){ //Èç¹ûdisplay²»Ã¦ display.sleep(); //ÐÝÃß }
ÔÚ°ü×ÊÔ´¹ÜÀíÆ÷ÖУ¬ÓÒµ¥»÷ÎļþÃûHelloSWT.java¡úÔËÐз½Ê½¡úJavaÓ¦ÓóÌÐò£¬³ÌÐòÔËÐÐ
½á¹ûÈçͼ4.3Ëùʾ¡£¸Ã´°Ìå¾ßÓеäÐ͵ÄWindows·ç¸ñ¡£
·ÖÎö±¾ÀýµÄÔ´´úÂ룬¿ÉÒÔ¿´µ½£¬´´½¨Ò»¸öµäÐ͵ÄSWTÓ¦ÓóÌÐòÐèÒªÒÔϲ½Ö裺 ¢Ù´´½¨Ò»¸öDisplay ¢Ú´´½¨Ò»¸ö»ò¶à¸öShell ¢ÛÉèÖÃShellµÄ²¼¾Ö ¢Ü´´½¨ShellÖеÄ×é¼þ
¢ÝÓÃopen()·½·¨´ò¿ªShell´°Ìå ¢Þдһ¸öʼþת·¢Ñ»· ¢ßÏú»Ùdisplay
4.1.2 SWTÖеİü
SWTÊÇEclipseͼÐÎAPIµÄ»ù´¡£¬±¾½Ú¼òµ¥½éÉÜÒ»ÏÂSWTÖг£Óõİü¡£
1£®org.eclipse.swt.widgets
×î³£ÓõÄ×é¼þ»ù±¾¶¼Ôڴ˰üÖУ¬ÈçButton¡¢Text¡¢Label¡¢ComboµÈ¡£ÆäÖÐÁ½¸ö×îÖØÒªµÄ×é¼þÊÇShellºÍComposite¡£ShellÏ൱ÓÚÓ¦ÓóÌÐòµÄÖ÷´°Ì壻CompositeÊÇÈÝÄÉ×é¼þµÄÈÝÆ÷£¬Ï൱ÓÚSWINGÖеÄPanel¶ÔÏó¡£
2£®org.eclipse.swt.layout
Ö÷ÒªµÄ½çÃæ²¼¾Ö·½Ê½Ôڴ˰üÖС£SWT¶Ô×é¼þµÄ²¼¾ÖÒ²²ÉÓÃÁËAWT/SWINGÖеÄLayoutºÍLayout Data½áºÏµÄ·½Ê½¡£
3£®org.eclipse.swt.custom
¶ÔһЩ»ù±¾Í¼ÐÎ×é¼þµÄÀ©Õ¹Ôڴ˰üÖУ¬±ÈÈçÆäÖеÄCLabel¾ÍÊǶԱê×¼Label×é¼þµÄÀ©Õ¹£¬ÔÚCLabelÉÏ¿ÉÒÔͬʱ¼ÓÈëÎÄ×ÖºÍͼƬ¡£Ôڴ˰üÖл¹ÓÐÒ»¸öеIJ¼¾Ö·½Ê½StackLayout¡£
4£®org.eclipse.swt.event
SWT²ÉÓÃÁ˺ÍAWT/SWINGÒ»ÑùµÄʼþÄ£ÐÍ£¬ÔÚ°üÖпÉÒÔÕÒµ½Ê¼þ¼àÌýÀàºÍÏàÓ¦µÄÊÂ