JFreeChart:在SWT中向ChartComposite添加关键侦听器

时间:2011-12-21 15:15:33

标签: java swt jfreechart keylistener

使用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);
    }
});

我认为这是应该添加一个关键监听器的方式,但是这个代码永远不会被调用 我在网上看到了一些关键听众的实现,但它们都引用了SwingAWT。 我的问题是如何在SWT中做到这一点?

谢谢

1 个答案:

答案 0 :(得分:2)

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);