Интерфейс Invocable, продемонстрированный в предыдущем разделе, помимо всего прочего позволяет реализовать интерфейсы на языке JavaScript. В приме_ ре 12.3 используется программный JavaScript_код из файла listener.js для реали_ зации интерфейса java.awt.event.KeyListener.
Пример 12.3. Реализация Java'интерфейса средствами JavaScript'кода
import javax.script.*; import java.io.*;
import java.awt.event.*; import javax.swing.*;
public class Keys {
public static void main(String[] args) throws ScriptException, IOException
{
// Создать экземпляр интерпретатора, или "ScriptEngine", для запуска сценария. ScriptEngineManager scriptManager = new ScriptEngineManager( );
// Теперь использовать KeyListener при создании простейшего
// графического интерфейса пользователя.
JFrame frame = new JFrame("Keys Demo"); frame.addKeyListener(listener); frame.setSize(200, 200); frame.setVisible(true);
}
}
Реализация интерфейса на языке JavaScript просто означает определение функ_ ций с именами, совпадающими с именами тех методов, которые определены в ин_ терфейсе. Вот пример простого сценария, реализующего интерфейс KeyListener:
function keyPressed(e) {
print("нажата клавиша: "
+ String.fromCharCode(e.getKeyChar()));
}
function keyReleased(e)
{
/*
ничего
не
делает
*/
}
function keyTyped(e)
{
/*
ничего
не
делает
*/
}
Обратите внимание: объявленная здесь JavaScript_функция keyPressed() прини_ мает в качестве аргумента объект java.awt.event.KeyEvent и фактически вызывает метод Java_объекта. В следующем разделе рассказывается о том, как это делается.