keyListener,判断该key为keyEvent.YK_SHIFT时,break()
解决方案 »
- 求指教SWT.EMBEDDED 嵌入mplayer何解?
- import语句出错
- 二维数组程序
- 用io流复制文件夹(包括文件夹里的文件)--出现的问题,无法创建文件夹
- short的问题
- 求助,字符串替换, $ABCD与X$=1与$FFEE$=3 ,如上字符串,是否能用正则表达式实现如下替换
- 大家说说用什么工具好用啊?
- 急需一个java写的树型结构,功能类似于windows的资源管理器
- WINDOWS 2000系统下怎样查看允许创建的最大线程数或者最大进程数啊?
- 靠近Java
- 最近在sun的Bug Database上提交了一个Bug,已经被修复了,但不知什么时候发布,唉,散散分吧,散散心。
- 看原代码FileSystem.java时看到奇怪(小弟太菜,只能用"奇怪")的static的用法,请大家帮忙解释一下,谢谢!
{
public static void main(String[] args) throws Exception{ MyApp myApp1 = new MyApp();}
public MyApp() throws Exception
{
addKeyListener(new java.awt.event.KeyAdapter() {
public void keyPressed(java.awt.event.KeyEvent e) {
if((e.getModifiers()&java.awt.event.KeyEvent.SHIFT_MASK) != 0){
keyPressed = true;
}
}
});
setSize(320,200);
setVisible(true);
methoda();
} private void methoda() {
Thread.currentThread().setPriority(Thread.MIN_PRIORITY);
while(true){
//todo:...
System.out.println("todo something...");
if(keyPressed){
break;
}
}
System.out.println("ok.");
}
private volatile boolean keyPressed = false;
}
1、可以用多线程
2、如果用单线程,一定要在循环中用sleep,否则很难捕捉到key事件
而且应该把循环放在多线程里面,
从而让UI线程得到机会去处理SHIFT按键,
否则会发现每次都要等循环完成才有机会响应SHIFT key
另外vc里面可以在循环中调用
void DoEvents()
{
MSG msg; while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}或者vb直接调用doEvents()我就不清楚java是否也有类似的函数,可以给机会让ui线程处理消息或者触发listener所以为了安全起见,还是自己采用多线程把