2017-05-21 5 views
0

나는 Kotlin TornadoFX를 사용하여 브라우저를 만들고 있습니다.Kotlin에서 TornadoFX WebEngine Callback을 구현하는 방법

var wv = webview() 
val br = wv.getEngine() 
br.setCreatePopupHandler(Callback<PopupFeatures, WebEngine>() { 
      override fun call(pf: PopupFeatures): WebEngine { 
       var smallView = webview() 
       val stage = Stage(StageStyle.UTILITY) 
       stage.setScene(Scene(smallView)) 
       stage.show() 
       val engine = smallView.getEngine() 
       return engine 
      } 
     }) 

내가왔다 : TornadoFX을 사용하는 코 틀린로 번역

webEngine.setCreatePopupHandler(
      new Callback<PopupFeatures, WebEngine>() { 
       @Override 
       public WebEngine call(PopupFeatures config) { 
        smallView.setFontScale(0.8); 
        if (!toolBar.getChildren().contains(smallView)) { 
         toolBar.getChildren().add(smallView); 
        } 
       return smallView.getEngine(); 
      } 
    }); 

:

e: surfing\src\surfing.kt: (76, 13): Modifier 'override' is not applicable to 'local function'

e: surfing\src\surfing.kt: (76, 13): Expected a value of type WebEngine!

내가 자바 FX를 사용하여이 자바 코드를 참조 : 나는 WebEngine setCreatePopupHandler을 구현할 때 오류가 발생합니다 인터넷에서 오랜 시간을 검색했지만 아무것도 찾지 못했습니다. 제발 누군가가 나를이 오류를 해결할 수 있습니다.

답변

0
당신이 많은 자바에서와 동일한 방식으로 익명의 클래스를 만들려면 거의 :)있어

, 당신은 class 문 앞에 object 키워드를 사용해야합니다

그러나 br.createPopupHandler = object : Callback<PopupFeatures, WebEngine> {

, Kotlin을 사용하면 SAM 유형을 람다로 변환 할 수 있습니다. 또한 속성 액세스 패턴과 불변 값을 사용하여 코드를 약간 정리할 수 있습니다. 여기에 코드를 다시 작성하고 Kotlinified : 난 정말 당신이 무슨 일을하는지 평가 또는 즉, 좋은 생각이 있다면 그렇게에만 구문 :

+0

우선에 내 조언을하지 않은

val wv = webview() val br = wv.engine br.setCreatePopupHandler { val smallView = webview() val stage = Stage(StageStyle.UTILITY) stage.scene = Scene(smallView) stage.show() smallView.engine } 

tornadoFX 개발자가 내 질문에 매우 놀랐습니다. 정말 고맙습니다. 이 문제는 tornadoFX ver 1.5.7에서 ver1.7.5로 변경하고 다른 ver 문제점을 ouccer하므로 ver1.5.7을 다시 변경하고 조언 방법을 컴파일 해보십시오. 성공한 빌드는 내 문제를 해결했습니다. 다시 고마워요 :) –

+0

위대한! 업그레이드하는 데 문제가있는 경우 jvmTarget을 1.8로 변경하는 것을 잊었 기 때문일 수 있습니다. 1.7.1 릴리스 정보 페이지의 지침을 참조하십시오. https://github.com/edvin/tornadofx/releases/tag/v1.7.1 –

+0

그렇습니다. 당신의 설명을 듣고 곧 이해합니다. 고마워! –