主题:[讨论]eclipse中按钮的问题
jflin
[专家分:0] 发布于 2006-10-17 12:56:00
我在Eclipse中运行这个程序:
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.*;
import java.awt.Color;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
public class A{
/**
* Launch the application
* @param args
*/
public static void main(String[] args) {
final Display display = Display.getDefault();
final Shell shell = new Shell();
shell.setSize(500, 375);
shell.setText("SWT Application");
shell.open();
final Button button = new Button(shell, SWT.NONE);
button.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e)
{
button.setForeground(Color.blue);
button.setBackground(Color.cyan);
}
});
button.setText("button");
button.setBounds(60, 60, 120, 60);
shell.layout();
while (!shell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
}
}
}
提示这两行 button.setForeground(Color.blue);
button.setBackground(Color.cyan);
出错了,请问应该怎么改才能让按钮能够响应到这个事件?
回复列表 (共10个回复)
沙发
argentmoon [专家分:13260] 发布于 2006-10-17 13:01:00
button是final变量 ?
板凳
zhangheng77 [专家分:5510] 发布于 2006-10-17 13:26:00
我觉得这里改成(没测试过)
public class A implements MouseListener
3 楼
jflin [专家分:0] 发布于 2006-10-17 18:39:00
final变量是自动生成的按钮类型,这个没事的吧?
to zhangheng77,我有这样改过啊,但还是不行啊,还能看出其他的错误吗?
4 楼
argentmoon [专家分:13260] 发布于 2006-10-17 18:49:00
把button的final去掉看看。
final不是常量吗,既然是常量还可以再修改吗?
5 楼
jflin [专家分:0] 发布于 2006-10-17 19:27:00
还是不行啊,去掉final不能引用了button了
加上去的是这个错误:
类型 Control 中的方法 setBackground(Color)对于参数(Color)不适用
6 楼
zhangheng77 [专家分:5510] 发布于 2006-10-17 21:10:00
button.setForeground(display.getSystemColor(SWT.COLOR_BLUE));
button.setBackground(display.getSystemColor(SWT.COLOR_CYAN));
7 楼
jflin [专家分:0] 发布于 2006-10-17 22:40:00
这样改了可以运行,但没有响应那两个事件啊,怎么办啊?为什么响应不了?
8 楼
zhangheng77 [专家分:5510] 发布于 2006-10-18 09:52:00
SWT以前没用过,
我刚刚试过了,鼠标监听是没错的,
你把这个改一下,你会发现,你点鼠标的时候是可以响应的
public void mouseDown(MouseEvent e){
button.setText("Hello");
}
});
但是估计是颜色那里有问题,我在网上查了下:
“SWT封装的Button是不能设置背景的。”
“只能实现自我绘制的Button组件”
参见
http://www.eclipseworld.org/bbs/read.php?tid=7393
http://www.eclipseworld.org/bbs/read.php?tid=5107
9 楼
jflin [专家分:0] 发布于 2006-10-18 15:18:00
谢谢,我就是搞不懂为什么只有颜色这里不行,其他都响应得了,今天看了贴明白了
10 楼
J_separator [专家分:0] 发布于 2008-04-11 14:38:00
Color对象用错了,不用使用java.awt.Color,应该用org.eclipse.swt.graphics.Color
我来回复