Java can';不要在摇摆中打开网站
我正在为计算机展览会准备一个项目,我正在为它准备网络浏览器。 它运行完美,但当我打开一个网站,如,它是不可见的清晰。一个带有谷歌标志和一些文字的蓝色屏幕出现 我的代码是:Java can';不要在摇摆中打开网站,java,html,swing,Java,Html,Swing,我正在为计算机展览会准备一个项目,我正在为它准备网络浏览器。 它运行完美,但当我打开一个网站,如,它是不可见的清晰。一个带有谷歌标志和一些文字的蓝色屏幕出现 我的代码是: import java.awt.BorderLayout; import java.awt.Cursor; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.IOException; import ja
import java.awt.BorderLayout;
import java.awt.Cursor;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.*;
import javax.swing.JButton;
import javax.swing.JEditorPane;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
import javax.swing.event.HyperlinkEvent;
import javax.swing.event.HyperlinkListener;
import javax.swing.text.html.*;
public class browser
extends JFrame
implements HyperlinkListener{
URL pageURL;
private static final long serialVersionUID = 1630568393141656837L;
JPanel panel;
JButton back,forward,go;
JTextField website;
JEditorPane display;
JScrollPane sp;
public void setPanel()
{
panel=new JPanel();
back=new JButton("<<");
forward=new JButton(">>");
go=new JButton("GO");
panel.add(back);
panel.add(forward);
website=new JTextField("http://",10);
panel.add(website);
panel.add(go);
sp=new JScrollPane();
display=new JEditorPane();
display.setEditable(false);
display.setContentType("text/html");
sp.add(display);
go.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
browse();
}
});
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new BorderLayout());
add(panel,BorderLayout.NORTH);
add(display,BorderLayout.CENTER);
setSize(900,500);
setVisible(true);
}
protected void browse() {
String page=website.getText();
try {
pageURL=new URL(page);
} catch (MalformedURLException e) {
e.printStackTrace();
}
try {
display.setPage(pageURL);
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String arg[])
{
browser br=new browser();
br.setPanel();
}
@Override
public void hyperlinkUpdate(HyperlinkEvent arg0) {
// TODO Auto-generated method stub
HyperlinkEvent.EventType event=arg0.getEventType();
if(event==HyperlinkEvent.EventType.ACTIVATED);
{
browse();
}
}
}
导入java.awt.BorderLayout;
导入java.awt.Cursor;
导入java.awt.event.ActionEvent;
导入java.awt.event.ActionListener;
导入java.io.IOException;
导入java.net.MalformedURLException;
导入java.net.URL;
导入java.util.*;
导入javax.swing.JButton;
导入javax.swing.JEditorPane;
导入javax.swing.JFrame;
导入javax.swing.JPanel;
导入javax.swing.JScrollPane;
导入javax.swing.JTextField;
导入javax.swing.event.HyperlinkEvent;
导入javax.swing.event.HyperlinkListener;
导入javax.swing.text.html.*;
公共类浏览器
扩展JFrame
实现HyperlinkListener{
URL页面URL;
私有静态最终长serialVersionUID=163056893141656837L;
JPanel小组;
b按钮后退,前进,前进;
JTextField网站;
平板显示器;
JScrollPane sp;
公共无效设置面板()
{
panel=新的JPanel();
返回=新的JButton(“”);
go=新的JButton(“go”);
面板。添加(背面);
面板。添加(前进);
网站=新的JTextField(“http://”,10);
添加(网站);
面板。添加(go);
sp=新的JScrollPane();
display=新的窗格();
display.setEditable(false);
display.setContentType(“text/html”);
sp.add(显示);
go.addActionListener(新ActionListener(){
@凌驾
已执行的公共无效操作(操作事件arg0){
//TODO自动生成的方法存根
浏览();
}
});
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(新的BorderLayout());
添加(面板,边界布局。北);
添加(显示、边框布局、中心);
设置大小(900500);
setVisible(真);
}
受保护的void browse(){
String page=website.getText();
试一试{
pageURL=新URL(第页);
}捕获(格式错误){
e、 printStackTrace();
}
试一试{
display.setPage(pageURL);
}捕获(IOE异常){
e、 printStackTrace();
}
}
公共静态void main(字符串arg[])
{
浏览器br=新浏览器();
br.setPanel();
}
@凌驾
公共无效hyperlinkUpdate(HyperlinkEvent arg0){
//TODO自动生成的方法存根
HyperlinkEvent.EventType事件=arg0.getEventType();
if(event==HyperlinkEvent.EventType.ACTIVATED);
{
浏览();
}
}
}
您无法使用jeditorpane正确查看html页面,因为它有限制。
你只能对基本html使用editorpane。它不提供良好的css支持,也不支持javascript。如果你想正确显示网页,你可以使用良好的html css和js支持库。看看lobo浏览器,你也可以使用
更新
这是一个如何在swing应用程序中使用JavaFXWebView来正确查看网页的示例。我只对代码做了少量更改
完整代码
import com.sun.javafx.application.PlatformImpl;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.net.URL;
import javafx.application.Platform;
import javafx.embed.swing.JFXPanel;
import javafx.scene.Scene;
import javafx.scene.layout.BorderPane;
import javafx.scene.web.WebView;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
import javax.swing.event.HyperlinkEvent;
import javax.swing.event.HyperlinkListener;
public class browser extends JFrame implements HyperlinkListener {
URL pageURL;
private static final long serialVersionUID = 1630568393141656837L;
JPanel panel;
JButton back, forward, go;
JTextField website;
JScrollPane sp;
private JFXPanel display;
WebView webComponent;
public void setPanel() {
panel = new JPanel();
back = new JButton("<<");
forward = new JButton(">>");
go = new JButton("GO");
panel.add(back);
panel.add(forward);
website = new JTextField("http://", 10);
panel.add(website);
panel.add(go);
display = new JFXPanel();
createScene();
go.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
Platform.runLater(new Runnable() {
@Override
public void run() {
browse();
}
});
}
});
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new BorderLayout());
add(panel, BorderLayout.NORTH);
add(display, BorderLayout.CENTER);
setSize(900, 500);
setVisible(true);
}
private void createScene() {
PlatformImpl.startup(new Runnable() {
@Override
public void run() {
BorderPane borderPane = new BorderPane();
webComponent = new WebView();
borderPane.setCenter(webComponent);
Scene scene = new Scene(borderPane, 450, 450);
display.setScene(scene);
}
});
}
protected void browse() {
String url = website.getText();
if (url != null && url.length() > 0) {
webComponent.getEngine().load(url);
}
}
public static void main(String arg[]) {
browser br = new browser();
br.setPanel();
}
@Override
public void hyperlinkUpdate(HyperlinkEvent arg0) {
HyperlinkEvent.EventType event = arg0.getEventType();
if (event == HyperlinkEvent.EventType.ACTIVATED);
{
browse();
}
}
}
import com.sun.javafx.application.PlatformImpl;
导入java.awt.BorderLayout;
导入java.awt.event.ActionEvent;
导入java.awt.event.ActionListener;
导入java.net.URL;
导入javafx.application.Platform;
导入javafx.embed.swing.JFXPanel;
导入javafx.scene.scene;
导入javafx.scene.layout.BorderPane;
导入javafx.scene.web.WebView;
导入javax.swing.JButton;
导入javax.swing.JFrame;
导入javax.swing.JPanel;
导入javax.swing.JScrollPane;
导入javax.swing.JTextField;
导入javax.swing.event.HyperlinkEvent;
导入javax.swing.event.HyperlinkListener;
公共类浏览器扩展JFrame实现HyperlinkListener{
URL页面URL;
私有静态最终长serialVersionUID=163056893141656837L;
JPanel小组;
b按钮后退,前进,前进;
JTextField网站;
JScrollPane sp;
专用JFX面板显示器;
网络视图网络组件;
公共无效设置面板(){
panel=新的JPanel();
返回=新的JButton(“”);
go=新的JButton(“go”);
面板。添加(背面);
面板。添加(前进);
网站=新的JTextField(“http://”,10);
添加(网站);
面板。添加(go);
display=newjfxpanel();
createScene();
go.addActionListener(新ActionListener(){
@凌驾
已执行的公共无效操作(操作事件e){
Platform.runLater(新的Runnable(){
@凌驾
公开募捐{
浏览();
}
});
}
});
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(新的BorderLayout());
添加(面板,边界布局。北);
添加(显示、边框布局、中心);
设置大小(900500);
setVisible(真);
}
私有void createScene(){
PlatformImpl.startup(新的可运行(){
@凌驾
公开募捐{
BorderPane BorderPane=新的BorderPane();
webComponent=新建WebView();
borderPane.setCenter(网络组件);
场景=新场景(边框窗格,450450);
显示.setScene(场景);
}
});
}
受保护的void browse(){
字符串url=website.getText();
if(url!=null&&url.length()>0){
webComponent.getEngine().load(url);
}
}
公共静态void main(字符串arg[]){
浏览器br=新浏览器();
br.setPanel();
}
@凌驾
公共无效hyperlinkUpdate(HyperlinkEvent arg0){
HyperlinkEvent.EventType事件=arg0.getEventType();
if(event==HyperlinkEvent.EventType.ACTIVATED);
{
浏览();
}
}
}
看起来怎么样
替换
显示。设置启用(假)代码>显示设置可编辑(false)代码>第一个。@Priyank禁用javascript