【发布时间】:2015-12-21 18:13:19
【问题描述】:
我有一个 web 视图,我可以在其中查看来自研究的图像(使用自定义搜索 API),通过单击其中一个(一次或两次无关紧要,我需要了解这个概念)我应该能够捕捉到他的Url 和 hten 关闭 webview 。目前,Url 图像是静态的,并且使用 ArrayList 进行管理,因为我在另一个类中进行研究,下一步也是最后一步是将 webview 集成到 Jframe 中,但这将是另一个问题。那么,我怎样才能得到那个 URL?
代码如下:
import java.util.ArrayList;
import javafx.application.Application;
import javafx.geometry.HPos;
import javafx.geometry.VPos;
import javafx.scene.Node;
import javafx.scene.Scene;
import javafx.scene.layout.HBox;
import javafx.scene.layout.Priority;
import javafx.scene.layout.Region;
import javafx.scene.paint.Color;
import javafx.scene.web.WebEngine;
import javafx.scene.web.WebView;
import javafx.stage.Stage;
public class WebViewSample extends Application {
private Scene scene;
@Override public void start(Stage stage) {
// create the scene
stage.setTitle("Web View");
scene = new Scene(new Browser(),750,500, Color.web("#666970"));
stage.setScene(scene);
//scene.getStylesheets().add("webviewsample/BrowserToolbar.css");
stage.show();
// scene.addEventFilter(MouseEvent.MOUSE_PRESSED, new EventHandler<MouseEvent>() {
// @Override
// public void handle(MouseEvent mouseEvent) {
// System.out.println("mouse click detected! " + mouseEvent.getSource());
// }
// });
}
public static void main(String[] args){
launch(args);
}
}
class Browser extends Region {
final WebView browser = new WebView();
final WebEngine webEngine = browser.getEngine();
public Browser() {
//apply the styles
getStyleClass().add("browser");
// load the web page
int i=0;
//webEngine.load("https://www.google.it/earth/images/products_mobile.png");
String first ="<html> <body>";
String fin ="</body> </html>";
String complete = "";
ArrayList<String> test = new ArrayList<>();
test.add("http://www.google.it/events/images/speakers_global/marco_polillo.jpg");
test.add("https://www.google.it/earth/images/products_mobile.png");
complete = complete.concat(first);
for(int j = 0; j< test.size(); j++)
{
complete = complete.concat("<img src=");
complete = complete.concat(test.get(j));
complete = complete.concat(" style= padding:10px; margin:20px; display:inline-block; margin: 0px 12px 12px 0px; overflow: ; position: relative; vertical-align: top; z-index: 5; height:200px width:auto border:6px solid red>");
}
complete = complete.concat(fin);
browser.getEngine().loadContent(complete);
//add the web view to the scene
getChildren().add(browser);
}
private Node createSpacer() {
Region spacer = new Region();
HBox.setHgrow(spacer, Priority.ALWAYS);
return spacer;
}
@Override protected void layoutChildren() {
double w = getWidth();
double h = getHeight();
layoutInArea(browser,0,0,w,h,0, HPos.CENTER, VPos.CENTER);
}
@Override protected double computePrefWidth(double height) {
return 750;
}
@Override protected double computePrefHeight(double width) {
return 500;
}
}
【问题讨论】: