Java 如何将JCEF与Intellij一起使用?
我一直在试图找出是否有一种方法可以使用Chromium浏览器作为Java应用程序的UI。我发现了这个IntelliJ页面:我不明白的是我如何在我的项目中实际使用它。我的IntelliJ版本是2020.3,它说在2020.2默认情况下启用了JCEF。然而,我不知道如何在我的项目中使用JCEF。我似乎找不到任何清晰的文档。例如,当我尝试导入com.intellij时,它找不到包 在我的IntelliJ项目中是否有集成JCEF的教程或指南Java 如何将JCEF与Intellij一起使用?,java,chromium,Java,Chromium,我一直在试图找出是否有一种方法可以使用Chromium浏览器作为Java应用程序的UI。我发现了这个IntelliJ页面:我不明白的是我如何在我的项目中实际使用它。我的IntelliJ版本是2020.3,它说在2020.2默认情况下启用了JCEF。然而,我不知道如何在我的项目中使用JCEF。我似乎找不到任何清晰的文档。例如,当我尝试导入com.intellij时,它找不到包 在我的IntelliJ项目中是否有集成JCEF的教程或指南 您可以运行jetty server或使用资源提供程序。 资源提
<script src="http://registercallback/events.js"></script>
有关更多详细信息,请查看(WebDialog.kt文件)中的这一行代码
经过所有操作后,我能够以简单的方式编写组件:
FE:
是:
override fun callbacks():列表{
val data=ArrayList(project.getSettings().envs.map{it.copy()})
这个数据=数据;
返回列表(
BrowserCallback(“componentReady”){主体,管道->
info(“更新${body}”)
pipe.post(“initData”,mapper.writeValueAsString(mapOf(
“updateModes”到updateModes,
“分支”到project.getRepository().GetLocalBranchs(),
“环境”到数据,
)))
},
BrowserCallback(“envsUpdated”){主体,管道->
logger.info(“envsUpdated${body}”)
val envs=mapper.readValue(正文)
this.data=ArrayList(envs);
}
)
}
如果在linux jcef上抛出[0827/153404.046731:致命:gpu\u data\u manager\u impl\u private.cc(439)]gpu进程不可用。再见。
您可以通过下一个代码禁用gpu:类gpu编辑器:jbceAppRequiredArgumentsProvider{覆盖val选项:List get()=listOf(“--disable gpu”,“--disable gpu compositing”)}
CefApp.getInstance().registerSchemeHandlerFactory("http", "registercallback", InjectJsHandlerFactory(inject()))
constructor(private zone: NgZone) {
let w: any = window;
w.messagePipe.subscribe('initData', (res) => {
console.info('initData', res);
zone.run(() => {
this.updateData(res);
});
});
w.messagePipe.post('componentReady', 'SettingsComponent ready')
}
override fun callbacks(): List<BrowserCallback> {
val data = ArrayList(project.getSettings().envs.map { it.copy() })
this.data = data;
return listOf(
BrowserCallback("componentReady") {body, pipe ->
logger.info("Update ${body}")
pipe.post("initData", mapper.writeValueAsString(mapOf(
"updateModes" to updateModes,
"branches" to project.getRepository().getLocalBranches(),
"envs" to data,
)))
},
BrowserCallback("envsUpdated") {body, pipe ->
logger.info("envsUpdated ${body}")
val envs = mapper.readValue<List<EnvironmentSettings>>(body)
this.data = ArrayList(envs);
}
)
}