JFreeChart: добавление ключевого слушателя в ChartComposite в SWT - PullRequest
1 голос
/ 21 декабря 2011

У меня возникли проблемы с настройкой ключевого прослушивателя для моего объекта ChartComposite с помощью SWT. Поддерживается ли эта функция 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?

Спасибо

1 Ответ

2 голосов
/ 23 декабря 2011

ChartComposite не документирован в библиотеке Javadoc , поэтому благодаря предоставленной @Sorceror ссылке я нашел правильный способ сделать это.

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