java - 在 Java 11 中使用 Java AWT 获取 Compent 的 Winows 句柄以进行 OpenOffice 集成
问题描述
几年前,我编写了一个包含 OpenOffice Writer 组件的 Java 应用程序 (Swing)。
该技巧依赖于 jdk 中的一些 sun.awt 类来检索 AWT 容器的句柄并将其传递给 OO 对象:
public static long getHWnd(Component f) {
ComponentPeer compPeer = f.getPeer();
if (compPeer == null) {
return 0;
}
if (compPeer instanceof WComponentPeer) {
return ((WComponentPeer) compPeer).getHWnd();
}
// typically we get here if the peer is of class sun.awt.NullComponentPeer
// (e.g if the Component is a Swing object - apparently these do not have a "peer")
return -1;
}
在我搬到 OpenJDK 之前,这一直有效。
在 Java 11 中,Componet#getPeer
不再可用。
在 OpenJDK 中,WComponentPeer
不能作为旧 sun.awt 类的一部分使用
他们是否有其他方法可以在 Java11 中检索该句柄?
(或者更简洁的方式将 OO Writer 组件集成到 Java Swing 应用程序中?)
解决方案
推荐阅读
- ios - Firebase iOS SDK 崩溃与 FIRInstallations validateAppOptions:appName
- java - 杰克逊反序列化混合数组
- java - 为什么我们必须像“float x = (float)4.5;”一样声明浮点数 2 次
- python - 自定义字段 Django Rest Framework
- android - http 调用未在 Android 上完成
- mysql - 长时间运行的 innodb 查询在 mariadb 中生成一个大的撤消文件
- asp.net-core - 如何构建一个针对 CousLinux 的自包含网络核心 Web 应用程序?
- javascript - 在javascript中删除字符串中的空格
- java - 在未关闭的情况下发送包裹时出现错误
- sql - 在数组列上插入