Topic: 关于给button加image的问题,请求帮助~~~ |
Print this page |
1.关于给button加image的问题,请求帮助~~~ | Copy to clipboard |
Posted by: qingxing2005 Posted on: 2005-03-12 08:54 import org.eclipse.swt.graphics.Image; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.SWT; public class B_I { private org.eclipse.swt.widgets.Shell sShell = null; private Button button = null; public static void main(String[] args) { org.eclipse.swt.widgets.Display display = org.eclipse.swt.widgets.Display.getDefault(); B_I thisClass = new B_I(); thisClass.createSShell() ; thisClass.sShell.open(); Image image = new Image(display, "E:\\eclipse-SDK-3.0-win32\\eclipse\\pictures\\sign.JPG"); //position 1 while (!thisClass.sShell.isDisposed()) { if (!display.readAndDispatch()) display.sleep (); } display.dispose(); } private void createSShell() { sShell = new org.eclipse.swt.widgets.Shell(); button = new Button(sShell, SWT.PUSH); sShell.setText("Shell"); button.setBounds(new org.eclipse.swt.graphics.Rectangle(40,42,66,31)); sShell.setSize(new org.eclipse.swt.graphics.Point(300,200)); //Image image = new Image(display, "E:\\eclipse-SDK-3.0-win32\\eclipse\\pictures\\sign.JPG"); //position 2 button.setImage(image); } } 想给button加个图片。 问题:怎么解决display和button.setImage的问题? 1.如果在position2的位置上写,display找不到。 2.如果将Image image = new Image(display, "E:\\eclipse-SDK-3.0-win32\\eclipse\\pictures\\sign.JPG");这句话写在position 1的位置上,button.setImage(image)却不能调用image. 应该怎么做才能解决问题,或许是这种做法本来就不行? |
2.Re:关于给button加image的问题,请求帮助~~~ [Re: qingxing2005] | Copy to clipboard |
Posted by: jackzhuo Posted on: 2005-03-12 16:08 private void createSShell() 方法中将display传入不就可以了?! 如: private void createSShell(Display display) 这样就可以在position 2生成一个image了. |
3.Re:关于给button加image的问题,请求帮助~~~ [Re: qingxing2005] | Copy to clipboard |
Posted by: qingxing2005 Posted on: 2005-03-12 20:41 谢谢楼上的帮忙。 还有一个问题,如果想将image和button的底色设置为一样的颜色,例如button为灰色,Image的背景为白色(截图后)。除了用PS,或是简单一点的画板修改之外,在SWT中间有什么特别的设置么?例如把button上面的图片调为灰色的背景。SWT能做么?不过在Image里面好像没有发现。 |
4.Re:关于给button加image的问题,请求帮助~~~ [Re: qingxing2005] | Copy to clipboard |
Posted by: yipsilon Posted on: 2005-03-13 02:46 1. display是main方法中的局部变量, 此类变量只能在方法中调用, 其他方法无法访问, 除非作为其他方法的参数把该变量传递, 就像jackzhuo兄说的. 2. 如下: ... thisClass.createSShell() ; thisClass.sShell.open(); Image image = new Image(display, "E:\\eclipse-SDK-3.0-win32\\eclipse\\pictures\\sign.JPG"); //position 1 ... 你的createSShell()方法在声明image前面调用, 而button.setImage(image)在createSShell方法中, 也就是说image还没创建你就去调用image当然出错嘛. 楼主的这段代码其实在语法上就有错误, 楼主你应该找个JavaIDE运行一下就知道了, 不过还是强烈建议楼主好好看Java基础. ^_^ |
5.Re:关于给button加image的问题,请求帮助~~~ [Re: qingxing2005] | Copy to clipboard |
Posted by: qingxing2005 Posted on: 2005-03-15 22:17 谢谢yipsilon的回答, 我会花时间好好看看JAVA基础的,只不过现在的时间不是很多。多谢你的建议。:0) “还有一个问题,如果想将image和button的底色设置为一样的颜色,例如button为灰色,Image的背景为白色(截图后)。除了用PS,或是简单一点的画板修改之外,在SWT中间有什么特别的设置么?例如把button上面的图片调为灰色的背景。SWT能做么?不过在Image里面好像没有发现。” 对了,这个问题能解决么? |
6.Re:关于给button加image的问题,请求帮助~~~ [Re: qingxing2005] | Copy to clipboard |
Posted by: kite Posted on: 2005-03-16 17:24 问题 1:其实你没有必要传递它,在用的地方同样用org.eclipse.swt.widgets.Display.getDefault();即可。 问题 2:在SWT中是可以做的,可以参考http://www.eclipse.org/articles/Article-SWT-images/graphics-resources.html |
7.Re:关于给button加image的问题,请求帮助~~~ [Re: qingxing2005] | Copy to clipboard |
Posted by: jackzhuo Posted on: 2005-03-30 18:37 qingxing2005 wrote: 我想可能没有什么其它的方法(或许我不知道),不过我们现在在使用的很多C++ BUILDER的类似控件,也都是要指定两张图的。 其实我也在找是否有这样的SWT控件,如果有的话,我们的系统可以完成移植到Java上了,哈哈 |
8.Re:关于给button加image的问题,请求帮助~~~ [Re: jackzhuo] | Copy to clipboard |
Posted by: qingxing2005 Posted on: 2005-03-30 18:53 jackzhuo wrote: 那就是说要想让image和button有一样的颜色(例如全为灰色),除了用PS改,没有其他办法了? |
9.Re:关于给button加image的问题,请求帮助~~~ [Re: qingxing2005] | Copy to clipboard |
Posted by: kite Posted on: 2005-03-31 11:03 用透明色绘制image不行吗? |
10.Re:关于给button加image的问题,请求帮助~~~ [Re: kite] | Copy to clipboard |
Posted by: qingxing2005 Posted on: 2005-03-31 17:41 kite wrote: 在SWT中么?能不能给个例子呢?不知道用什么方法。。。 不好意思,谢谢~~~~ |
11.Re:关于给button加image的问题,请求帮助~~~ [Re: qingxing2005] | Copy to clipboard |
Posted by: kite Posted on: 2005-04-01 11:06 下面是示例代码,用自己的image文件替换里面的image文件。不过此代码只是示意的,如果真正使用,还是需要添加一些东西的。 import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.*; import org.eclipse.swt.graphics.*; import org.eclipse.swt.events.*; import org.eclipse.swt.layout.*; public class Test { public static void main(String[] args) { final Display display = new Display(); final Shell shell = new Shell(display); shell.setLayout(new FillLayout()); ImageData ideaData = new ImageData(Snippet1.class.getResourceAsStream("Idea.gif")); int whitePixel = ideaData.palette.getPixel(new RGB(255,255,255)); ideaData.transparentPixel = whitePixel; final Image transparentIdeaImage = new Image(display,ideaData); final Button label = new Button(shell,SWT.NONE); label.addPaintListener(new PaintListener() { public void paintControl(PaintEvent e) { e.gc.drawImage(transparentIdeaImage,e.width / 2,e.height / 2); } }); label.addSelectionListener(new SelectionAdapter(){ public void widgetSelected(org.eclipse.swt.events.SelectionEvent e){ label.redraw(); } }); shell.open(); while (!shell.isDisposed()) { if (!display.readAndDispatch()) display.sleep(); } display.dispose(); } } |
Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1 客服电话 18559299278 客服信箱 714923@qq.com 客服QQ 714923 |