当我尝试将一个超链接器添加到JEditorPane时,我不断收到此消息“无法访问WebBrowser类型的封闭实例。必须使用WebBrowser类型的封闭实例来限定分配(例如,xx是A(),其中x是WebBrowser的实例。“
JEditorPane webPageFrame = new JEditorPane(website);
webPageFrame.setEditable(false);
webPageFrame.addHyperlinkListener(new hylinks());
browserFrame.add(webPageFrame, BorderLayout.NORTH);
public class hylinks实现了HyperlinkListener {
public void hyperlinkUpdate(HyperlinkEvent e) {
System.out.println("test");
}
}`
完整代码
package myBrow;
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.InputStreamReader;
import java.net.URL;
import java.security.cert.Certificate;
import java.util.Scanner;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JEditorPane;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.event.HyperlinkEvent;
import javax.swing.event.HyperlinkListener;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLPeerUnverifiedException;
public class WebBrowser implements HyperlinkListener {
public static void main(String[] args) {
String webAdress = "http://www.gamestop.com";
JTextField webAddressBar;
JButton go;
try {
URL website = new URL(webAdress);
InputStreamReader reader = new InputStreamReader(website.openStream());
Scanner webStream = new Scanner(reader);
String s = "";
while (webStream.hasNextLine()) {
String temp = webStream.nextLine();
s = s + temp;
}
String heading = s.substring(s.indexOf("<title>") + 7, s.indexOf("</title>"));
System.out.println(s);
JFrame browserFrame = new JFrame(heading);
browserFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
browserFrame.setLayout(new BorderLayout());
JEditorPane webPageFrame = new JEditorPane(website);
webPageFrame.setEditable(false);
webPageFrame.addHyperlinkListener(new hylinks());
browserFrame.add(webPageFrame, BorderLayout.NORTH);
JPanel surfBar = new JPanel();
surfBar.setLayout(new FlowLayout());
webAddressBar = new JTextField("Enter Web Address");
go = new JButton("GO");
go.addActionListener(new buttons());
surfBar.add(webAddressBar);
surfBar.add(go);
browserFrame.setSize(600, 600);
JScrollPane jsp = new JScrollPane(webPageFrame);
browserFrame.setVisible(true);
browserFrame.add(jsp);
browserFrame.add(surfBar, BorderLayout.NORTH);
} catch (Exception ex) {
System.out.println("error occured");
}
}
public class hylinks implements HyperlinkListener {
public void hyperlinkUpdate(HyperlinkEvent e) {
System.out.println("test");
}
}
public class buttons implements ActionListener {
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
}
}
}