SWT:Define a global keylistener for your Display
2011-02-14 00:43
232 查看
Display 有这么一个方法:
public void addFilter (int eventType, Listener listener)
也就是给Display添加一个全局的监听.比如:上面的为程序定义快捷键Ctrl+a.
这个Display的Filter很强大, 无论当前焦点在哪个控件上,都可以监听这个Ctrl+a的事件.
如果界面中还有其他的控件也监听这个快捷键的话, 那么这个Display中的监听会比其他控件的监听先执行.
下面的代码来自
http://www.vogella.de/articles/SWT/article.html
Define a global keylistener for your Display
You can define a global keylistener on your display to listen globally to all key events as long as your application has focus. The following demonstrates this.
package de.vogella.swt.listener;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Shell;
public class GlobalListener {
public static void main(String[] args) {
Display display = new Display();
Shell shell = new Shell(display);
shell.open();
display.addFilter(SWT.KeyDown, new Listener() {
@Override
public void handleEvent(Event event) {
char c = event.character;
System.out.println(c);
}
});
while (!shell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
}
}
}
public void addFilter (int eventType, Listener listener)
也就是给Display添加一个全局的监听.比如:上面的为程序定义快捷键Ctrl+a.
这个Display的Filter很强大, 无论当前焦点在哪个控件上,都可以监听这个Ctrl+a的事件.
如果界面中还有其他的控件也监听这个快捷键的话, 那么这个Display中的监听会比其他控件的监听先执行.
下面的代码来自
http://www.vogella.de/articles/SWT/article.html
Define a global keylistener for your Display
You can define a global keylistener on your display to listen globally to all key events as long as your application has focus. The following demonstrates this.
package de.vogella.swt.listener;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Shell;
public class GlobalListener {
public static void main(String[] args) {
Display display = new Display();
Shell shell = new Shell(display);
shell.open();
display.addFilter(SWT.KeyDown, new Listener() {
@Override
public void handleEvent(Event event) {
char c = event.character;
System.out.println(c);
}
});
while (!shell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
}
}
}
相关文章推荐
- (转)How to Update Your Apps for the 4-Inch iPhone 5 Display
- uiautomatorviewer.bat Please set ANDROID_SWT to point to the folder containing swt.jar for your ...
- Display Point for a Location
- MySQL连接错误“Cannot get hostname for your address”解决方案
- MySQL有关1042 Can’t get hostname for your address的问题分析解决过程
- Microsoft Office Excel 2007 Data Analysis: Your Visual Blueprint for Creating and Analyzing Data, Ch
- Redesign Your App for iOS 7 之 页面布局
- How to generate exe for your PERL script?
- Your System Is Legacy; Design for It
- 40 Tips for optimizing your php Code 优化PHP代码的40条建议
- 运行hadoop程序出现问题:Unable to load native-hadoop library for your platform
- Otter: Tool for Topology Display
- 54.Automatic Shared Memory Management (ASMM) has been enabled for your database instance. The initia
- No JVM could be found on your system. Please define EXE4J_JAVA_HOME to point to an installed 32-bit
- check the manual that corresponds to your MySQL server version for the right syntax to
- 5 meta tags for making your website into a iOS Web App
- QT移植之:Checking for libz... Configure:error: not found. Check your installation and look into config.
- Hadoop2.2.0 中错误总结之(WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platfo)
- Unable to boot – please use a kernel appropriate for your CPU.
- 异常解决:util.NativeCodeLoader: Unable to load native-hadoop library for your platform