问题描述
源代码如下(其中加大加粗的两句为插入按钮图片的句子):packagecom.swtdesigner;importorg.eclipse.jface.dialogs.MessageDialog;importorg.eclipse.swt.SWT;importorg.eclipse.swt.custom.ViewForm;importorg.eclipse.swt.events.SelectionAdapter;importorg.eclipse.swt.events.SelectionEvent;importorg.eclipse.swt.graphics.Image;importorg.eclipse.swt.layout.FillLayout;importorg.eclipse.swt.widgets.Display;importorg.eclipse.swt.widgets.Shell;importorg.eclipse.swt.widgets.Text;importorg.eclipse.swt.widgets.ToolBar;importorg.eclipse.swt.widgets.ToolItem;publicclassSimpleEditer1{/***Launchtheapplication.*@paramargs*/publicstaticvoidmain(String[]args){Displaydisplay=Display.getDefault();Shellshell=newShell();shell.setSize(450,300);shell.setText("SWTApplication");shell.setLayout(newFillLayout());ViewFormviewForm=newViewForm(shell,SWT.NONE);viewForm.setLayout(newFillLayout());ToolBartoolBar=newToolBar(viewForm,SWT.NONE);finalTexttext=newText(viewForm,SWT.BORDER|SWT.V_SCROLL);viewForm.setContent(text);viewForm.setTopLeft(toolBar);ToolItemtoolItem=newToolItem(toolBar,SWT.PUSH);toolItem.setText("取得");toolItem.setImage(newImage(display,"icons/aa.gif"));toolItem.addSelectionListener(newSelectionAdapter(){publicvoidwidgetSelected(SelectionEvente){Stringstr=text.getText();//取得文本框的文字MessageDialog.openInformation(null,null,str);}});ToolItemtoolItem2=newToolItem(toolBar,SWT.PUSH);toolItem2.setText("清除");toolItem2.setImage(newImage(display,"icons/bb.gif"));toolItem2.addSelectionListener(newSelectionAdapter(){publicvoidwidgetSelected(SelectionEvente){text.setText("");}});shell.open();shell.layout();while(!shell.isDisposed()){if(!display.readAndDispatch()){display.sleep();}}}}
解决方案
解决方案二:
没有你这么使用的,这个路径肯定是不对的
解决方案三:
既然那用了WindowBuilderpro,为啥不看看它是怎么设置图片的呢,然后学习下
解决方案四:
恩不过感觉看完还是不懂我查了下apiImage类的构造方法如下:Image(Devicedevice,ImageDatadata)ConstructsaninstanceofthisclassfromthegivenImageData.Image(Devicedevice,ImageDatasource,ImageDatamask)Constructsaninstanceofthisclass,whosetypeisSWT.ICON,fromthetwogivenImageDataobjects.Image(Devicedevice,ImagesrcImage,intflag)Constructsanewinstanceofthisclassbasedontheprovidedimage,withanappearancethatvariesdependingonthevalueoftheflag.Image(Devicedevice,InputStreamstream)Constructsaninstanceofthisclassbyloadingitsrepresentationfromthespecifiedinputstream.Image(Devicedevice,intwidth,intheight)Constructsanemptyinstanceofthisclasswiththespecifiedwidthandheight.Image(Devicedevice,Rectanglebounds)Constructsanemptyinstanceofthisclasswiththewidthandheightofthespecifiedrectangle.Image(Devicedevice,Stringfilename)Constructsaninstanceofthisclassbyloadingitsrepresentationfromthefilewiththespecifiedname.还是不怎么懂。。。引用2楼salever的回复:
既然那用了WindowBuilderpro,为啥不看看它是怎么设置图片的呢,然后学习下
解决方案五:
这个"icons/aa.gif"一定要在当前的runtime的classpath下,一般我会使用Activator.getImageDescriptor()来避免绝对路径的问题的
解决方案六:
引用4楼salever的回复:
这个"icons/aa.gif"一定要在当前的runtime的classpath下,一般我会使用Activator.getImageDescriptor()来避免绝对路径的问题的
原来高手在这里哈哈我建议楼主去googlercpiamge使用你就知道怎么回事了
解决方案七:
引用5楼soszou的回复:
引用4楼salever的回复:这个"icons/aa.gif"一定要在当前的runtime的classpath下,一般我会使用Activator.getImageDescriptor()来避免绝对路径的问题的原来高手在这里哈哈我建议楼主去googlercpiamge使用你就知道怎么回事了
不是啥高手,读过几年书,上过几年班,尘世里一个迷途小coder。。。
解决方案八:
引用6楼salever的回复:
引用5楼soszou的回复:引用4楼salever的回复:这个"icons/aa.gif"一定要在当前的runtime的classpath下,一般我会使用Activator.getImageDescriptor()来避免绝对路径的问题的原来高手在这里哈哈我建议楼主去googlercpiamge使用你就知道怎么回事了……
说你高手还自恋上了哈哈