将 Java SWT/AWT 桥嵌入到 winform 窗体中
Embedding Java SWT/AWT bridge into winform form
我创建了一个带有按钮的 winform 窗体,当我单击该按钮时,我调用了一个 Java AWT (.jar) 进程。之后,我使用 SetParent(...) 将此过程嵌入到面板中。代码:
var procStartInfo = new ProcessStartInfo();
procStartInfo.WindowStyle = ProcessWindowStyle.Normal;
procStartInfo.FileName = "file.jar";
var process = Process.Start(procStartInfo);
var container = new FormContainer();
container.Show();
Panel p = new Panel();
container.Controls.Add(p);
SetParent(process.MainWindowHandle, p.Handle);
问题是当我嵌入 jar 时...文本框没有响应任何按键事件。我想这个问题与 Java Swing 应用程序有关。使用任何其他现代 Java 应用程序一切正常
知道我是否需要其他任何东西来解决这个问题
问题出在桥焦点处理程序上。在 java 1.8 版本中,焦点处理程序使用多线程代码,这似乎是 java 嵌入式应用程序中的问题。我们删除了异步代码,它工作正常
我创建了一个带有按钮的 winform 窗体,当我单击该按钮时,我调用了一个 Java AWT (.jar) 进程。之后,我使用 SetParent(...) 将此过程嵌入到面板中。代码:
var procStartInfo = new ProcessStartInfo();
procStartInfo.WindowStyle = ProcessWindowStyle.Normal;
procStartInfo.FileName = "file.jar";
var process = Process.Start(procStartInfo);
var container = new FormContainer();
container.Show();
Panel p = new Panel();
container.Controls.Add(p);
SetParent(process.MainWindowHandle, p.Handle);
问题是当我嵌入 jar 时...文本框没有响应任何按键事件。我想这个问题与 Java Swing 应用程序有关。使用任何其他现代 Java 应用程序一切正常
知道我是否需要其他任何东西来解决这个问题
问题出在桥焦点处理程序上。在 java 1.8 版本中,焦点处理程序使用多线程代码,这似乎是 java 嵌入式应用程序中的问题。我们删除了异步代码,它工作正常