我正在使用JEditorPane创建一个非常基本的Web浏览器,只是用Java自学Swing和GUI但是在实现类似Firefox的Google搜索栏时遇到了麻烦。
我不是因为它是由于JEditorPane的限制或我缺乏理解但是如果我尝试将字符串键入“Google搜索”栏并使用JEditorPane的setPage()方法,它不会工作
以下是“Google搜索”按钮的ActionListener的代码:
public void actionPerformed(ActionEvent arg0)
{
try
{
content.setPage("http://www.google.com/search?q=" + searchBar.getText());
}
catch (IOException e)
{
JOptionPane.showMessageDialog(frame, "Error searching for: " + searchBar.getText());
}
}
即使我尝试只做content.setPage(“http://www.google.com/search?p=test”);它不起作用,所以它与setPage()获取URL字符串的方式有关吗?因为它不喜欢“?”或“=”字符或是否有另一种方式一起完成所有这些?
感谢您的时间,
InfinitiFizz
答案 0 :(得分:1)
添加内容以打印您正在捕捉的异常,您会看到您收到403 Forbidden from Google。
有很多Java机器人,网站已经开始在用户代理字段中使用“java”阻止请求。谷歌将允许您获取他们的主页,但除非您覆盖用户代理字段,否则不会让您搜索。
使用-Dhttp.agent=myappname/1.0
启动您的jvm,其中 myappname 是您的应用程序的名称。
答案 1 :(得分:0)
即使是最简单的浏览器,JEditorPane也是一个糟糕的选择。它可以显示简单的HTML页面,但它会停在那里。
尝试The Flying Saucer Project,效果非常好(它不是一个完整的浏览器,但足够接近)。他们有一个模拟实际网络浏览器的例子。
答案 2 :(得分:0)
就像adrian.tarau所说,JEditorPane在展示现代网页方面非常差劲 它甚至不支持HTML 4或Javascript。我相信Google使用Javascript来使搜索按钮有效。
另一个建议是使用Lobo Browser / Cobra engine。
答案 3 :(得分:0)
如果你需要一个完整的Java浏览器,请查看Lobo: http://lobobrowser.org/java-browser.jsp