Luaj - добавить слушателя действия JButton от Lua - PullRequest
0 голосов
/ 30 марта 2012

В приложении, которое я разрабатываю на 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)

1 Ответ

1 голос
/ 23 октября 2012

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

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

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

...