【发布时间】:2011-04-02 13:19:00
【问题描述】:
import org.jsoup.Jsoup;
@SuppressWarnings("unused")
public class SimpleWebCrawler extends JFrame {
JTextField yourInputField = new JTextField(20);
static JTextArea _resultArea = new JTextArea(200, 200);
JScrollPane scrollingArea = new JScrollPane(_resultArea);
private final static String newline = "\n";
public SimpleWebCrawler() throws MalformedURLException {
_resultArea.setEditable(false);
String word2 = yourInputField.getText();
try {
URL my_url = new URL("http://" + word2 + "/");
BufferedReader br = new BufferedReader(new InputStreamReader(
my_url.openStream()));
String strTemp = "";
while (null != (strTemp = br.readLine())) {
_resultArea.append(strTemp + newline);
}
} catch (Exception ex) {
ex.printStackTrace();
}
_resultArea.append("\n");
_resultArea.append("\n");
_resultArea.append("\n");
String url = "http://" + word2 + "/";
print("Fetching %s...", url);
try{
Document doc = Jsoup.connect(url).get();
Elements links = doc.select("a[href]");
System.out.println("\n");
BufferedWriter bw = new BufferedWriter(new FileWriter("C:\\Users\\user\\fypworkspace\\FYP\\Link\\abc.txt"));
_resultArea.append("\n");
for (Element link : links) {
print(" %s ", link.attr("abs:href"), trim(link.text(), 35));
bw.write(link.attr("abs:href"));
bw.write(System.getProperty("line.separator"));
}
bw.flush();
bw.close();
} catch (IOException e1) {
}
JPanel content = new JPanel();
content.setLayout(new BorderLayout());
content.add(scrollingArea, BorderLayout.CENTER);
content.add(yourInputField);
this.setContentPane(content);
this.setTitle("Crawled Links");
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.pack();
}
private static void print(String msg, Object... args) {
_resultArea.append(String.format(msg, args) +newline);
}
private static String trim(String s, int width) {
if (s.length() > width)
return s.substring(0, width - 1) + ".";
else
return s;
}
//.. Get the content pane, set layout, add to center
public static void main(String[] args) throws IOException {
JFrame win = new SimpleWebCrawler();
win.setVisible(true);
}
}
我正在尝试创建一个 JTextField 来接收用户的输入。我创建了一个 JTextField 实例并添加到 JFrame 中。但是,此代码不起作用。介意指出我的错误吗?它应该可以工作,但是我找不到问题所在。我还有什么想念的吗?
JTextField 的代码:
JTextField yourInputField = new JTextField(20);
String word2 = yourInputField.getText();
content.add(yourInputField);
这一行显示了 IllegalArgumentException 的错误。
my_url.openStream()
我希望看到一个 JTextField 弹出来接收输入,这是一个随机 URL,代码将处理该 URL。抱歉我的问题表现不佳。我对编程问答论坛不是很熟悉。
【问题讨论】:
-
当您提出问题时,请解释“不工作”的含义。它没有做什么?它不显示吗?尺寸不合适吗?等
-
它不显示 Jtextfield 并立即打印出 IllegalArgumentException。
-
您似乎希望我们复制该源,添加导入,追踪“jsoup”,提供输入文本文件并猜测“不工作”是什么意思?不用了,谢谢,我有更好的事情要做。尽快获得更好的帮助:1) 发布SSCCE 2) 准确描述您期望看到的内容。 3) 准确描述您看到的内容。
-
哪一行打印出异常?什么是完整的堆栈跟踪?
-
嗨,我编辑了我的问题以回应您的 cmets。很抱歉显示不好。