网站未显示在处理程序中

问题描述

我试图让我的处理项目显示一个网页,但它不起作用。有谁知道为什么?

import javax.swing.JEditorPane;
import javax.swing.JFrame;
import javax.swing.JScrollPane;

public class GetWebPage {
    public static void main(String args[]) throws Exception {
        JEditorPane website = new JEditorPane("https://www.google.nl/maps/@51.7385025,-2.6407162,3a,79y,132.82h,79.64t/data=!3m6!1e1!3m4!1sMe0y36wXo7_CSHvur_4kPg!2e0!7i13312!8i6656?hl=nl");
        website.setEditable(false);
        JFrame frame = new JFrame("Google");
        frame.add(new JScrollPane(website));
        frame.setDefaultCloSEOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(800,600);
        frame.setVisible(true);
    }
}

解决方法

正如评论中提到的,JEditorPane 非常有限(主要是不支持必需的 JS)。

例如:

import javax.swing.JEditorPane;
import javax.swing.JFrame;
import javax.swing.JScrollPane;

void setup(){
  showWebPage();
  println("done");
}

void draw(){
  
}

void showWebPage(){
  try{
    JEditorPane website = new JEditorPane("https://www.google.nl/maps/@51.7385025,-2.6407162,3a,79y,132.82h,79.64t/data=!3m6!1e1!3m4!1sMe0y36wXo7_CSHvur_4kPg!2e0!7i13312!8i6656?hl=nl");
    website.setEditable(false);
    JFrame frame = new JFrame("Google");
    frame.add(new JScrollPane(website));
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setSize(800,600);
    frame.setVisible(true);
  }catch(IOException e){
    e.printStackTrace();
  }
}

输出:

StreetView noJS error

如果您不需要交互性,您可以使用 Google Street View Static API

以下是其中一个示例:

PImage streetView;

void setup() {
  size(400,400);
  streetView = loadImage("https://maps.googleapis.com/maps/api/streetview?size=400x400&location=47.5763831,-122.4211769&fov=80&heading=70&pitch=0&key=AIzaSyA3kg7YWugGl1lTXmAmaBGPNhDW9pEh5bo&signature=hg7yTczCuAp4fwIWFySlSr_vq7o=&filename=streetview.png");
}

void draw() {
  image(streetView,0);
}

有几个警告:

  1. 正如街景 API 文档中提到的,您需要get an API Key and Signature
  2. loadImage() 需要一个扩展来知道如何解码数据,因此我在最后添加了 &filename=streetview.png(例如,可以是类似 &ext=.png 的东西,只要它是一个有效的 URL 以 Processing 的扩展名结尾)

StreetView Static loaded as image in Processing

如果您需要加载动态网页,您可以试试JavaFX。我对它没有经验,但希望您可以通过 FX2D renderer in Processing

我个人觉得在 Java 中使用 WebAPI 有点麻烦/冗长。 根据您计划如何将街景集成到更大的应用程序中,您可以考虑直接在 JavaScript 中使用 Street View Service,并通过 p5.js 使用处理功能。如果您需要本机系统功能,您可以在 electron app

中加载 p5.js 前端