·
游玩商城
·
游戏论坛
·
安迪游戏世界
首页
软件应用
网站建设
视觉设计
程序开发
论坛交流
标题
副标题
全文
作者
关键字
导航
来源
您现在的位置: >
首页
>
程序开发
>
Java教程
>> 最新教程
>> 热门教程
>> 最新游戏资讯
>> 热门游戏资讯
>>
Java教程
Java获取Google天气预报实例代码
作者: 来自:安迪教程网 加入时间:10-09-17
进入论坛讨论
/**
* 一个利用Java获取Google天气预报的例子
*/
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.io.*;
import java.net.MalformedURLException;
import java.net.URL;
import org.w3c.dom.*;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.xml.parsers.*;
public class GoogleReport extends JFrame implements ActionListener {
JPanel p1 = new JPanel();
JTextField tf = new JTextField(2);
JButton but = new JButton("查询");
JPanel p2 = new JPanel();
JTextArea ta = new JTextArea(10, 40);
public GoogleReport() {
super("天气预报查询");
// 设置p1面板
p1.setLayout(new BorderLayout());
tf.addKeyListener(new TfListener());// 设置tf监听器
tf.setBorder(BorderFactory.createLineBorder(Color.blue, 1));
p1.add(tf, BorderLayout.CENTER);
but.setBorder(BorderFactory.createLineBorder(Color.green));// 设置按钮边框颜色
// 增加but事件监听器
but.addActionListener(this);
p1.add(but, BorderLayout.EAST);
add(p1, BorderLayout.NORTH);
// 设置p2面板
p2.setLayout(new GridLayout(1, 1));
JScrollPane sp = new JScrollPane(ta);
ta.setEnabled(false);
ta.setBorder(BorderFactory.createLineBorder(Color.red, 2));
p2.add(sp);
add(p2, BorderLayout.CENTER);
this.setSize(500, 400);
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
public static void main(String[] args) {
new GoogleReport();
}
/**
* getWeather->由city值获得天气情况
*
* @param city
* @return 获得的天气情况的字符串
*/
public String getWeather(String city) {
try {
URL ur = new URL("http://www.google.com/ig/api?hl=zh_cn&weather="
city);
InputStream instr = ur.openStream();
String s;
String str;
BufferedReader in = new BufferedReader(new InputStreamReader(instr));
StringBuffer sb = new StringBuffer();
Writer out = new BufferedWriter(new OutputStreamWriter(
new FileOutputStream("weather.txt"), "utf-8"));
while ((s = in.readLine()) != null) {
sb.append(s);
}
str = new String(sb);
out.write(str);
out.close();
in.close();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
File f = new File("weather.txt");
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
String str = null;
try {
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse(f);
NodeList nl = (NodeList) doc
.getElementsByTagName("forecast_conditions");// 获得XML文档的forecast_conditions元素
NodeList n2 = nl.item(0).getChildNodes();// 获得第一个forecast_condition的全部子节点
str = "今天是"
n2.item(0).getAttributes().item(0).getNodeValue()
","
n2.item(4).getAttributes().item(0).getNodeValue()
","// 获得n2的第五个元素current_conditions
"最低气温"
n2.item(1).getAttributes().item(0).getNodeValue()
"℃,"// 获得n2的第二个元素low
"最高气温"
n2.item(2).getAttributes().item(0).getNodeValue() "℃";// 获得n2的第二个元素hight
} catch (Exception e) {
}
return str;
}
private class TfListener extends KeyAdapter {
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_ENTER) {
String s = tf.getText();
tf.setText("");
String ss = getWeather(s);
// ta.setBorder(BorderFactory.createLineBorder(Color.RED,1));
ta.append(ss " ");
}
}
}
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource() == but) {
String s = tf.getText();
tf.setText("");
String ss = getWeather(s);
ta.append(ss " ");
}
}
}
相关教程
·
javascript自定义函数:获取下拉菜单的值
·
javascript两种有趣的数组定义方法
·
三种document.getElementById的简写方式实例
·
ASP获取当前页完整URL及其参数代码
·
Java访问操作SQL Server数据库实例代码
·
java自定义文件操作类实例代码
·
Java之常见返回的2种类型介绍
·
java之PO,VO,TO,BO,DAO,POJO名词介绍
·
C#发送Email的3种途径实例讲解
·
javascript之操作cookie实例讲解
·
javascript之sleep功能的实现代码
·
JavaScript实现判断页面是否被改动过实例代
·
禁止按回车键提交表单实例代码
·
ASP防止文件上传木马的代码
·
Asp实现图片加水印的实例代码介绍
·
Java Scripting API 的5个技巧
·
Java之在内部类中如何返回外部类对象
·
不需要main方法的Java程序实例代码
·
XML文件存储数据实例讲解
·
JavaScript之全局函数与全局属性
联系方式:QQ:6084884 email:agwcn@126.com
粤ICP备10101711号
本网站中发布的文章只代表发表人的个人观点,不代表安迪教程网网站的立场
copyright© 2000-2004 安迪教程网 All rights reserved agwcn.com