0

Java SE で開発しているアプリケーションでは、Luaj を使用して機能を実装しています (これはデータ コレクター アプリケーションです)。Java アプリは、デバイスの COM ポートを読み取り、アプリケーションのユーザーによって作成された Lua イベント ハンドラーにデータを渡します。ユーザー インターフェイスの一部も Lua から構築されていますが、JButton などの Swing コンポーネントに ActionListener オブジェクト (Lua にも実装) を追加する際に問題が発生しています。

私が現在立ち往生しているコード:

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

1 に答える 1

1

少し遅くなりましたが、参考までに、swingapp.lua スクリプトはリスナーの処理方法を示しています。

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

Luaj-jse 3.0-alpha1 でテスト済み

于 2012-10-23T11:30:40.500 に答える