2012-02-20 23 views
3

我想寫只使用鍵盤包括一個Web瀏覽器控件,它允許用戶通過一個HTML頁面上的文字和圖像導航使用JavaFX 2.0的應用程序 - 基本上就像Internet Explorer中的「caret browse」一樣。嘗試實現「光標瀏覽」使用JavaFX 2

的目標是能夠選擇文本或圖像的比特,並將它們複製到一個變量用於進一步操作不使用鼠標。

我接過一看HTML編輯控制這裏: http://docs.oracle.com/javafx/2.0/ui_controls/editor.htm#CHDBEGDD 但我不需要任何編輯功能弄亂UI和文檔說:

的格式工具欄在執行中提供的 組件。您無法切換其可見性。

WebView似乎是一個合乎邏輯的選擇(http://docs.oracle.com/javafx/2.0/webview/jfxpub-webview.htm),但我不確定如何將光標放到頁面上。

任何意見,將不勝感激。

回答

1

目前的WebView對脫字符瀏覽的支持對我來說似乎是不完整的。

這是我發現的運行快速測試:

  1. 我可以調用webView.requestFocus具有的WebView要求重點用於響應按鍵,但它只是對的WebView工作作爲一個整體,而不是單獨的組件在WebView內。
  2. WebView不實施類似於TextInputControl的選擇管理API,用於對選擇進行細粒度編程管理。
  3. WebView允許您選擇文本。但是,我必須用鼠標拖動來啓動選擇,然後我可以使用鍵盤來放大或縮短選擇(通過字符選擇和Ctrl +左鍵或右鍵選擇字符的左或右箭頭鍵)單詞選擇 - 向上和向下箭頭不影響選擇)。
  4. 在WebView中選擇一些文本後,我可以按Ctrl-C(在Windows中)將其複製到剪貼板並將文本粘貼到另一個程序中。只有原始文本被複制 - 關聯的樣式/ html信息和圖像未被複制。
  5. 要在圖像上的影像複製我不得不點擊右鍵並從下拉菜單中選擇複製圖片,我可以將圖像粘貼到小畫家 - 我無法找到一個方法來做到這一點沒有鼠標。
  6. 在其他瀏覽器,我可以按Tab鍵和Shift + Tab去從一個超鏈接到下一個 - 在WebView中,一旦它具有焦點,TAB將剛剛從一個控制(例如,在WebView中的HTML文本字段)轉至接下來(例如文本字段中的html按鈕)。
  7. 退格鍵與其他瀏覽器一樣工作(可帶您到上一頁)。

上述限制以及其他我沒有測試過的限制可能會使您很難完成您正在嘗試做的事情。你可以嘗試一些東西,例如使用eventfilter來捕獲按鍵事件,然後生成鼠標事件來啓動選擇和複製過程,但這對我來說聽起來很難,即使如此,JavaFX中目前還沒有公共API來生成鼠標事件一個不穩定的com.sun api。

WebView確實公開document object model,文檔是scriptable by JavaScript。嘗試使用eventfilter捕獲關鍵事件,偵聽文檔屬性以進行更改,並在適當的時候對WebView執行JavaScript以獲取和設置當前選擇。這對於實施起來也有點棘手。

完成儘可能多的與當前WebView控件和公共API和登錄問題在http://javafx-jira.kenai.com一樣,當你遇到短缺事件。

+1

我登錄了http://javafx-jira.kenai.com/browse/RT-19865(WebView:Tab在超鏈接和Enter之間的導航鍵激活)。 – jewelsea 2012-02-23 18:51:46

+0

http://javafx-jira.kenai.com/browse/RT-19865現在已經實現並且該功能將在2.2版本的JavaFX中可用。 – jewelsea 2012-03-29 21:19:49