使用SWT为我的ChartComposite对象设置键侦听器时遇到了一些麻烦。 ChartComposite支持此功能吗?
我的代码如下:
chartComposite.addKeyListener(new KeyListener() {
@Override
public void keyReleased(KeyEvent e) {
System.out.print("Key released: " + e.character);
}
@Override
public void keyPressed(KeyEvent e) {
System.out.print("Key pressed: " + e.character);
}
});
我假设这是应该添加密钥侦听器的方式,但是永远不会调用此代码。
我已经在网络上看到了一些关键侦听器的实现,但是它们都引用了
Swing
或AWT
。我的问题是如何在SWT中做到这一点?
谢谢
最佳答案
ChartComposite没有记录在库的Javadoc中,因此感谢@Sorceror提供的link,我找到了正确的方法。
public class MyChartComposite extends ChartComposite implements KeyListener
{
public MyChartComposite(Composite comp, int style, JFreeChart chart,
boolean useBuffer){
super(comp, style, chart, useBuffer);
addSWTListener(this);
}
@Override
public void keyPressed(org.eclipse.swt.events.KeyEvent e) {
System.out.print("Key released: " + e.character);
}
@Override
public void keyReleased(org.eclipse.swt.events.KeyEvent e) {
System.out.print("Key pressed: " + e.character);
}
}
我选择扩展ChartComposite的原因仅仅是为了允许以一种更加简洁的方式为其添加更多功能。
现在,您可以使用上面声明的类来实例化将捕获关键事件的对象:
chartComposite = new MyChartComposite(parent, SWT.NONE, chart, true);