Java获取Google天气预报实例代码(一)

2014-11-23 23:38:05 · 作者: · 浏览: 0
  1. /**
  2. * 一个利用Java获取Google天气预报的例子
  3. */
  4. import java.awt.BorderLayout;
  5. import java.awt.Color;
  6. import java.awt.GridLayout;
  7. import java.awt.event.ActionEvent;
  8. import java.awt.event.ActionListener;
  9. import java.awt.event.KeyAdapter;
  10. import java.awt.event.KeyEvent;
  11. import java.io.*;
  12. import java.net.MalformedURLException;
  13. import java.net.URL;
  14. import org.w3c.dom.*;
  15. import javax.swing.BorderFactory;
  16. import javax.swing.JButton;
  17. import javax.swing.JFrame;
  18. import javax.swing.JPanel;
  19. import javax.swing.JScrollPane;
  20. import javax.swing.JTextArea;
  21. import javax.swing.JTextField;
  22. import javax.xml.parsers.*;
  23. public class GoogleReport extends JFrame implements ActionListener {
  24. JPanel p1 = new JPanel();
  25. JTextField tf = new JTextField(2);
  26. JButton but = new JButton("查询");
  27. JPanel p2 = new JPanel();
  28. JTextArea ta = new JTextArea(10, 40);
  29. public GoogleReport() {
  30. super("天气预报查询");
  31. // 设置p1面板
  32. p1.setLayout(new BorderLayout());
  33. tf.addKeyListener(new TfListener());// 设置tf监听器
  34. tf.setBorder(BorderFactory.createLineBorder(Color.blue, 1));
  35. p1.add(tf, BorderLayout.CENTER);
  36. but.setBorder(BorderFactory.createLineBorder(Color.green));// 设置按钮边框颜色
  37. // 增加but事件监听器
  38. but.addActionListener(this);
  39. p1.add(but, BorderLayout.EAST);
  40. add(p1, BorderLayout.NORTH);
  41. // 设置p2面板
  42. p2.setLayout(new GridLayout(1, 1));
  43. JScrollPane sp = new JScrollPane(ta);
  44. ta.setEnabled(false);
  45. ta.setBorder(BorderFactory.createLineBorder(Color.red, 2));
  46. p2.add(sp);
  47. add(p2, BorderLayout.CENTER);
  48. this.setSize(500, 400);
  49. this.setLocationRelativeTo(null);
  50. this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  51. this.setVisible(true);
  52. }
  53. public static void main(String[] args) {
  54. new GoogleReport();
  55. }
  56. /**
  57. * getWeather->由city值获得天气情况
  58. *
  59. * @param city
  60. * @return 获得的天气情况的字符串
  61. */
  62. public String getWeather(String city) {
  63. try {
  64. URL ur = new URL("http://www.google.com/ig/api hl=zh_cn&weather="
  65. city);
  66. InputStream instr = ur.openStream();
  67. String s;
  68. String str;
  69. BufferedReader in = new BufferedReader(new InputStreamReader(instr));
  70. StringBuffer sb = new StringBuffer();
  71. Writer out = new BufferedWriter(new OutputStreamWriter(
  72. new FileOutputStream("weather.txt"), "utf-8"));
  73. while ((s = in.readLine()) != null) {
  74. sb.append(s);
  75. }
  76. str = new String(sb);
  77. out.write(str);
  78. out.close();
  79. in.close();
  80. } catch (MalformedURLException e) {
  81. e.printStackTrace();
  82. } catch (IOException e) {
  83. e.printStackTrace();
  84. }
  85. File f = new File("weather.txt");
  86. DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
  87. String str = null;
  88. try {
  89. DocumentBuilder builder = factory.newDocumentBuilder();
  90. Document doc = builder.parse(f);
  91. NodeList nl = (NodeList) doc
  92. .getElementsByTagName