0
FXCanvas를 사용하여 SWT 응용 프로그램의 JavaFX WebView/WebEngine을 사용하여 간단한 브라우저를 구현하려고합니다. 어떤 이유로, 복사/붙여 넣기 새로 고침과 같은 항목이있는 inbuilt 상황에 맞는 메뉴가 작동하지 않는 것 같습니다.JavaFX WebView 컨텍스트 메뉴
내 JavaFX 상황에 맞는 메뉴를 만들면 작동하지만 특정 지점에서 어떤 HTML 요소가 마우스 아래에 있는지 확인할 방법을 찾을 수 없습니다 (예 : 링크와 이미지의 메뉴 항목이 다름)
이 동작을 보여줍니다 간단한 예 :
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import javafx.embed.swt.FXCanvas;
import javafx.scene.Scene;
import javafx.scene.control.ContextMenu;
import javafx.scene.control.MenuItem;
import javafx.scene.input.MouseButton;
import javafx.scene.layout.BorderPane;
import javafx.scene.web.WebEngine;
import javafx.scene.web.WebView;
public class TestBrowser {
public static void main (String [] args) {
Display display = new Display();
Shell shell = new Shell(display);
shell.setLayout(new GridLayout());
FXCanvas canvas = new FXCanvas(shell, SWT.NONE);
canvas.setLayoutData(new GridData(SWT.FILL,SWT.FILL,true,true));
BorderPane borderPane = new BorderPane();
Scene scene = new Scene(borderPane);
canvas.setScene(scene);
WebView browser = new WebView();
WebEngine webEngine = browser.getEngine();
borderPane.setCenter(browser);
// createContextMenu(browser); Creating a custom context menu works
boolean test = browser.isContextMenuEnabled();
System.out.println("WebView context menu enabled? "+test);
webEngine.load("http://example.org");
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) display.sleep();
}
display.dispose();
}
private static void createContextMenu(WebView webView) {
ContextMenu contextMenu = new ContextMenu();
MenuItem reload = new MenuItem("Reload");
reload.setOnAction(e -> webView.getEngine().reload());
webView.setOnMousePressed(e -> {
if (e.getButton() == MouseButton.SECONDARY) {
contextMenu.show(webView, e.getScreenX(), e.getScreenY());
} else {
contextMenu.hide();
}
});
}
}
내가 뭔가 잘못하고 오전 또는이 FXCanvas/웹보기 버그인가?