Luaj — добавить прослушиватель действий JButton из Lua

В приложении, которое я разрабатываю на Java SE, я использую Luaj для реализации функциональности (это приложение для сбора данных). Приложение Java считывает COM-порт устройства и передает данные обработчикам событий Lua, написанным пользователем приложения. Часть пользовательского интерфейса также построена на Lua, однако у меня возникают проблемы с добавлением объектов ActionListener (также реализованных на Lua) в компоненты Swing, такие как JButton.

Код, на котором я сейчас застрял:

button = luajava.newInstance("javax.swing.JButton","test")
visuals:getPanel():add(button)

Это создает объект JButton и помещает его в компонент JPanel. Я также хотел бы определить прослушиватель действий для этой кнопки в Lua.

Любая идея, как я могу это сделать?

Я пробовал следующее, но это явно не работает.

al = {}
function al.actionPerformed(ev)
  print("test")
end

button.addActionListener(al)

person olaszakos    schedule 30.03.2012    source источник


Ответы (1)


Я немного опоздал, но для справки: скрипт swingapp.lua показывает, как обрабатывать слушателей:

button:addActionListener(luajava.createProxy('java.awt.event.ActionListener',
{
  actionPerformed = function (e)
    print('Action', e)
  end,
}))

Протестировано с Luaj-jse 3.0-alpha1

person PhiLho    schedule 23.10.2012
comment
Очень полезно, спасибо! Подобные проблемы не возникали бы так часто, если бы luaj сделал достойную документацию! :Р Еще раз спасибо! - person Miguel; 04.04.2013