javafx获取网页源码

之前用swing自己的也做过类似功能,今天用swing+javafx试了试,无聊的人啊

package com.javafx.test;

import java.awt.BorderLayout;
import java.awt.Toolkit;

import javafx.application.Platform;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.concurrent.Worker.State;
import javafx.embed.swing.JFXPanel;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.TextField;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.scene.web.WebEngine;
import javafx.scene.web.WebView;

import javax.swing.JFrame;

import org.w3c.dom.html.HTMLDivElement;

public class JavaFXEditWeb {
private static final int WIDTH = 800;
private static final int HEIGHT = 600;
private static final String url = "https://www.baidu.com/";
private static final String urlStart = "http://";

/**
* @param args
*/
public static void main(String[] args) {
JFrame frame = new JFrame("JavaFX in Swing Test");
final JFXPanel webBrowser = new JFXPanel();
frame.setLayout(new BorderLayout());
frame.add(webBrowser, BorderLayout.CENTER);
Platform.runLater(new Runnable() {

@Override
public void run() {
Group root = new Group();
Scene scene = new Scene(root, WIDTH, HEIGHT);
webBrowser.setScene(scene);
Double widthDouble = new Integer(WIDTH).doubleValue();
Double heightDouble = new Integer(HEIGHT).doubleValue();

VBox box = new VBox(10);
HBox urlBox = new HBox(10);
final TextField urlTextField = new TextField();
urlTextField.setText(url);
Button go = new Button("go");
urlTextField.setPrefWidth(WIDTH - 70);
urlBox.getChildren().addAll(urlTextField, go);

WebView view = new WebView();

view.setMinSize(widthDouble, heightDouble);
view.setPrefSize(widthDouble, heightDouble);
final WebEngine eng = view.getEngine();
eng.load(url);
root.getChildren().add(view);

box.getChildren().add(urlBox);
box.getChildren().add(view);
root.getChildren().add(box);

go.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
System.out.println("加载页面成功+++");
if (!urlTextField.getText().startsWith(urlStart)) {
eng.load(urlStart + urlTextField.getText());
} else {
eng.load(urlTextField.getText());
}
}
});

eng.getLoadWorker().stateProperty()
.addListener(new ChangeListener<State>() {
@Override
public void changed(
ObservableValue<? extends State> ov,
State oldState, State newState) {
if (newState == State.SUCCEEDED) {
System.out.print("succeeded");
HTMLDivElement element = (HTMLDivElement)eng.getDocument().getElementById("wrapper");
System.out.print(element.getTextContent());
}
}
});

}
});

int screenWidth = Toolkit.getDefaultToolkit().getScreenSize().width;
int screenHeight = Toolkit.getDefaultToolkit().getScreenSize().height;

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(WIDTH, HEIGHT);
frame.setLocation((screenWidth - WIDTH) / 2,
(screenHeight - HEIGHT) / 2);
frame.setVisible(true);
}

}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值