我们有一个swing应用程序,它通过JNIWrapper嵌入IE ocx组件.
从jdk6切换到jdk7后,我们开始注意焦点问题.当嵌入式IE显示带有文本字段的网页(例如谷歌搜索页面)而不是麻烦开始时:
浏览器"捕获"焦点,因此您可以开始在搜索文本字段中输入内容.键入的每个键都转到IE ocx.但是,摆动似乎忽略了这种焦点变化.即使我将焦点更改为swing文本字段(并且swing显示闪烁的输入光标),所有键入的键都会转到IE ocx
"修复"焦点的唯一方法是取消激活并激活主框架.之后,焦点似乎是一致的.但是,如果我再次点击谷歌搜索文本字段,焦点将再次被打破.
似乎jdk7中的焦点处理有很大的变化.从链接:
在Windows平台上,已经实现了"合成焦点"的概念.这意味着焦点所有者组件仅模拟其可聚焦状态,而真实本机焦点设置为"焦点代理"组件.此组件接收键和输入方法本机消息,并将它们分派给焦点所有者.在JDK7之前,焦点代理组件是框架/对话框内的专用隐藏子组件.在JDK7中,框架/对话框本身用作焦点代理.现在,它代理不仅关注拥有窗口中的组件,还关注所有子组件.一个简单的窗口永远不会接收原生焦点,并依赖于其所有者的焦点代理.此机制对用户是透明的,但在调试时应予以考虑.
任何人都有想法"修复"这种行为?
编辑:这里有一些代码用JxBrowser重现问题
public static void main(String[] args) {
Browser browser = BrowserFactory.createBrowser(BrowserType.IE);
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(browser.getComponent(), BorderLayout.CENTER);
JPanel panel = new JPanel();
frame.getContentPane().add(panel, BorderLayout.NORTH);
textField = new JTextField();
panel.add(textField);
textField.setColumns(10);
frame.setSize(700, 500);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
browser.navigate("http://www.google.com");
}
Run Code Online (Sandbox Code Playgroud) 有很多使用 cUrl 和 Neo4j 来执行查询的示例,但我无法让它工作。例如: https: //neo4j.com/blog/export-csv-from-neo4j-curl-cypher-jq/
操作系统:Windows 数据库:Neo4j 社区 3.1.1 cUrl:7.53.1
"D:\Programme\Tools\curl\curl.exe" -H "Content-Type: application/json" -d '{"statements":[{"statement":
"match (n) return count(n)"}]}' http://localhost:7474/db/data/transaction/commit
Run Code Online (Sandbox Code Playgroud)
结果:
{"results":[],"errors":[{"code":"Neo.ClientError.Request.InvalidFormat","message":"Unable to deserialize request: Unexpe
cted character (''' (code 39)): expected a valid value (number, String, array, object, 'true', 'false' or 'null')\n at [
Source: HttpInputOverHTTP@18463df6; line: 1, column: 2]"}]}
Run Code Online (Sandbox Code Playgroud)