天气预报Java

package work;

import java.a wt.Border Layout;
import java.a wt.Grid Layout;
import java.a wt.event.Action Event;
import java.a wt .event .Action Listener;

import java x.swing.Border Factory;
import java x.swing.J Button;
import java x.swing.J Frame;
import java x.swing.J Label;
import java x.swing.J Panel;
import java x.swing.J Text Area;
import java x.swing.J Text Field;

import java.i o.Buffered Reader;
import java.i o.Input Stream Reader;
import java.net.URL;
import java.net.URL Connection;

public class Weather {

public static void main(String[] args) {
	Weather weather = new Weather();
}

public Weather() {
	//打开一个窗口并设置title
	JFrame frame = new JFrame("天气查询");
	//定义 搜索,显示结果 区域
	JPanel Plane = new JPanel();
	JPanel TextPlane = new JPanel(new GridLayout(7,1));
	Plane.setBorder(BorderFactory.createEmptyBorder(20,20,10,20));
	TextPlane.setBorder(BorderFactory.createEmptyBorder(10,20,20,20));
	// 搜索按钮 关闭按钮 等控件
	JButton searchBtn = new JButton("搜索");
	JButton resetBtn = new JButton("重置");
	JButton closeBtn = new JButton("关闭");
	JLabel label= new JLabel("请输入城市名: ");
	//展示当天和未来5天的天气
	JLabel realtime = new JLabel("");
	JLabel n1 = new JLabel("");
	JLabel n2= new JLabel("");
	JLabel n3= new JLabel("");
	JLabel n4= new JLabel("");
	JLabel n5= new JLabel("");
	JLabel n6= new JLabel("");
	
	//输入框	
	JTextField input = new JTextField(10);
	//显示结果文本区域
	JTextArea textArea = new JTextArea();
	textArea.setLineWrap(true);
	textArea.setSize(600, 300);
	
	// 发生请求查询输入城市的天气
	searchBtn.addActionListener(new ActionListener() {
		@Override
		public void actionPerformed(ActionEvent e) {
			String city = input.getText();
			System.out.println("城市: " + city);
			String url = "http://localhost:3002/queryWeather?city=" + city;
			//保存数据
			String result = "";
			BufferedReader in = null;
			try {
				searchBtn.setText("请求中");
				URL realUrl = new URL(url);
				// 打开连接
				URLConnection connection = realUrl.openConnection();
				// 建立连接
				connection.connect();
				// 定义BufferedReader输入流来读取URL的响应
				in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
				String line;
				while ((line = in.readLine()) != null) {
					result += line;
				}
			} catch (Exception e1) {
				System.out.println("发送GET请求出现异常!" + e1);
				e1.printStackTrace();
			} finally {
				searchBtn.setText("搜索");
				try {
					if (in != null) {
						in.close();
					}
				} catch (Exception e2) {
					e2.printStackTrace();
				}
			}

			System.out.println("result:" + result);
			//处理数据 展示到plane
			if (result.length() != 0) {
				StringBuffer sb = new StringBuffer(result);
				//将json两边的 " 去掉
				sb.deleteCharAt(sb.length()-1);
				sb.deleteCharAt(0);
				String[] strArr = sb.toString().split("\\|");
				//如果是正确的结果则设置对应label的text
				 System.out.println(strArr.length);
				if(strArr.length == 7) {//约定好可以被分成7份
					realtime.setText(strArr[0]);
					n1.setText(strArr[1]);
					n2.setText(strArr[2]);
					n3.setText(strArr[3]);
					n4.setText(strArr[4]);
					n5.setText(strArr[5]);
					n6.setText(strArr[6]);
				}else realtime.setText(strArr[0]);
				
			}
		}
	});
	// 重置input
	resetBtn.addActionListener(new ActionListener() {
		@Override
		public void actionPerformed(ActionEvent e) {
			input.setText("");
			realtime.setText("");
			n1.setText("");
			n2.setText("");
			n3.setText("");
			n4.setText("");
			n5.setText("");
			n6.setText("");
		}
	});
	// 关闭窗口
	closeBtn.addActionListener(new ActionListener() {
		@Override
		public void actionPerformed(ActionEvent e) {
			System.exit(0);
		}
	});

	// 添加控件
	Plane.add(label);
	Plane.add(input);
	Plane.add(searchBtn);
	Plane.add(resetBtn);
	Plane.add(closeBtn);
	TextPlane.add(realtime);
	TextPlane.add(n1);
	TextPlane.add(n2);
	TextPlane.add(n3);
	TextPlane.add(n4);
	TextPlane.add(n5);
	TextPlane.add(n6);
	
	// 将区域添加到frame
	frame.add(Plane, BorderLayout.NORTH);
	frame.add(TextPlane, BorderLayout.CENTER);
	// 设置frame 大小 位置 是否显示 属性
	frame.setSize(600, 500);
	frame.setLocation(200, 200);
	frame.setVisible(true);
}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值