2012-11-19 2 views
1

HTMLEditor를 사용하여 편집 가능한 컨트롤을 만들려고합니다. Swing의 JEditorPane 또는 JTextPane과 같은 리치 텍스트 창을 사용하고 싶지만 2 년을 기다려야합니다. 그에 대한). 나는 사용자 유형을 텍스트로 가지려고하고 컨트롤이 적합하도록 자랍니다. 나는 스크롤 막대가 나타날 때 이벤트를 잡으려고 시도하고 사라질 때까지 크기를 늘려 보았지만 JavaFX 스레드가 실제로 부모에 대한 컨트롤의 크기를 조정할 때까지 기다릴 방법을 찾지 못했습니다.JavaFX 2 HTMLEditor 컨트롤 자동 크기 조정

그보다 더 좋은 방법은 없을 것입니다 ... 어떤 아이디어입니까? 텍스트가 제거되면 그것을 줄이는 방법에 대한 아이디어가 있습니까? 편집 컨트롤에 대한 TIA 마이크 와트

답변

1

example 또는 customized HTMLEditor 같은 contenteditable set to true와 웹보기를 사용합니다.

editor과 유사한 Java/JavaScript bridge을 사용하여 상호 작용합니다. 당신은 script the WebView using JQuery 일 수 있습니다. Timeline을 실행하여 JQuery dimension query scriptadjust the control size appropriately을 사용하여 편집 컨트롤의 텍스트 크기를 폴링합니다.

+0

고마워요. 예를 들어 그 옵션을 고려해 봤지만 아마 감사하겠습니다. (JQuery를 사용하는 경우 외부 라이브러리에 연결해야하는 Java에서 작성된 JavaScript를 작성하므로) 테스트하기가 번거롭고 원활하게 구현하기 어렵습니다. 좋은 올인원 코드로 코드를 작성하기를 바랬습니다. –

+0

나는 대답을 '받아 들일 수있는 답'으로 설정했습니다. 문제 (내가 의심했던 것처럼)가 JQuery에 연결하려고 시도하고있다. 나는 그것에 대한 또 다른 질문을 열었다! –

0

[부가 메모 : jewelsea의 세부 정보 일지라도 답변으로 추가했습니다. 주석으로 답장 할 때 코드의 형식을 지정할 수 없습니다.]

이 어느 정도 일했다 무엇 : 웹보기의 구성 요소의 HTML에서

,

setOnKeyPressed 것을를 사용하여 웹보기에 처리기를 추가 한 텍스트 블록의 모든 주위에 태그 <div id='measured'> 추가 이 너무 나쁘지 않다 checkHeight()

private int lastOffsetHeight; 


private void checkHeight() { 
    int newHeight = (Integer)webview.getEngine().executeScript(
      "document.getElementById(\"measured\").offsetHeight;") + 14; 

    if (newHeight != lastOffsetHeight) { 
     lastOffsetHeight = newHeight; 
     webview.setPrefHeight(newHeight); 
    } 
} 

를 호출, 가장 큰 문제는 모든 텍스트가 다음 삭제 된 경우 웹보기의 구성 요소가 사업부를 삭제한다는 것입니다. jewelsea가 언급 한 것처럼 JQuery가 더 나은 해결책이 될 수 있지만 라이브러리를 포함하는 문제를 해결하면이를 업데이트 할 것입니다 .-)

+0

jQuery의 height() 함수를 사용하여이 작업을 시도했습니다. 위에 표시된 작업과 마찬가지로 작동하지 않습니다 (작업은 예측할 수없는 형태의 첫눈입니다). 거기에 jQuery를 가져 오는 것이 고통 스럽습니다. jquery.js를 [java] sources 디렉토리에 두었습니다. 'getClass(). getResourceAsStream ("jquery.js")'를 사용하여 파일을 문자열로 읽은 다음 webiew에서 html을 설정할 때 해당 문자열을 ('src' 속성 대신) 스크립트로 작성합니다. –