
рдореИрдВ рдЫреБрдЯреНрдЯреА рдХреЗ рдЗрдВрддрдЬрд╛рд░ рдХреЗ рдЗрд╕ рдЦреВрдмрд╕реВрд░рдд рджрд┐рди рдкрд░ рд╕рднреА рдХреЛ рд╢реБрднрдХрд╛рдордирд╛рдПрдВ рджреЗрддрд╛ рд╣реВрдВ, рдпрд╣ рд╣рдм рдкрд░ рдореЗрд░рд╛ рдкрд╣рд▓рд╛ рд▓реЗрдЦ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдореИрдВ рдпреИрдВрдбреЗрдХреНрд╕ рдХреЗ рдЦреБрд▓реЗ рдореМрд╕рдо рдПрдкреАрдЖрдИ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдХрд╣рд╛рдиреА рдЪрд╛рд╣реВрдВрдЧрд╛ рд▓реЗрдЦ рд╢реБрд░реБрдЖрддреА рдХреЗ рд▓рд┐рдП рдЬрд╛рд╡рд╛ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХрд╛ рдПрдХ рдирд┐рд░рдВрддрд░рддрд╛ рд╣реИред рдпрд╣ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рд▓реЗрдЦ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд╣реИ, рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рднрд╛рд╖рд╛ рд╕реАрдЦрдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ рд╣реИ рдпрд╛ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рдЗрд╕ рд╕реЗрд╡рд╛ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдирд╣реАрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ, рдореБрдЭреЗ рдХрд┐рд╕реА рднреА рдкрд╛рдардХ (рдУрд╣ рдЯреЙрдЯреЛрд▓реЙрдЬреА ...) рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреАред рдпреИрдВрдбреЗрдХреНрд╕ рдЙрди рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫрд╛ рдЕрд╡рд╕рд░ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рдЕрдкрдиреЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдпрд╛ рдЕрдкрдиреА рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рдореМрд╕рдо рд░рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдФрд░ рдпреИрдВрдбреЗрдХреНрд╕ рдЬреЛ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рд╡рд╣ рдкрд░реНрдпрд╛рдкреНрдд рд╕реЗ рдЕрдзрд┐рдХ рд╣реИред
рдЖрдк рд╕рдкреНрддрд╛рд╣ рдореЗрдВ рдХрд┐рд╕реА рднреА рджрд┐рди рдореМрд╕рдо рдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рдЪреБрди рд╕рдХрддреЗ рд╣реИрдВред рд╡рд┐рднрд┐рдиреНрди рд░рд╛рдЬреНрдпреЛрдВ (рд╕реНрдкрд╖реНрдЯ, рдмрд╛рджрд▓, рдЖрджрд┐), рдХрдИ рднрд╛рд╖рд╛рдПрдВ (рд╢рд╣рд░реЛрдВ рдХреЗ рд▓рд┐рдП, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд░реВрд╕реА рдФрд░ рдЕрдВрдЧреНрд░реЗрдЬреА, рд╕реАрдЖрдИрдПрд╕ рджреЗрд╢реЛрдВ рдХреА рд╕рднреА рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд░рд╛рдЬреНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдФрд░ рди рдХреЗрд╡рд▓: рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ, рдРрдЬрд╝, рдЕрдХреАрдХ, рдЕрд╢реНрдп, рдЖрджрд┐), рдореИрдВ рдирд╣реАрдВ рдХрд░рддрд╛ рднреВрдЧреЛрд▓ рдореЗрдВ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЬрд╛рдирдХрд╛рд░реА рд╕рднреА рджреЗрд╢реЛрдВ рдХреЗ рд▓рд┐рдП рд╣реИ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдореМрд╕рдо рдХреА рд╕реНрдерд┐рддрд┐ рдХреА рд▓рдШреБ рддрд╕реНрд╡реАрд░реЗрдВ рднреА рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдЗрд╕ рд╕реЗрд╡рд╛ рдХреЛ рдЪреБрдирд╛ рдПрдХ рд╕рд░рд▓ рдФрд░ рд╕реНрдкрд╖реНрдЯ рд╕рдВрд░рдЪрдирд╛ рд╣реИред рдореИрдВ рддреБрд░рдВрдд рдЖрд░рдХреНрд╖рдг рдХрд░ рджреВрдВрдЧрд╛, рдЙрдиреНрд╣реЛрдВрдиреЗ рдореБрдЭреЗ "рд╡рд┐рдЬреНрдЮрд╛рдкрди" рдХреЗ рд▓рд┐рдП рднреБрдЧрддрд╛рди рдирд╣реАрдВ рдХрд┐рдпрд╛ред
рдмрд╛рд╣рд░реА рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рд╡рд╛рд▓рд╛ рдПрдХ рд╡рд░реНрдЧ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ, рдореИрдВ рд╕рд┐рд░реНрдл рдХреЛрдб рджреЗ рджреВрдВрдЧрд╛ рддрд╛рдХрд┐ рддрдм рдХреЛрдИ рд╡рд┐рд╕рдВрдЧрддрд┐рдпрд╛рдВ рди рд╣реЛрдВред рдореИрдВ рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдореБрдЭреЗ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдореБрдЭреЗ рдЕрдкрдирд╛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рдореЗрд░реЗ рдЧрд░реАрдм:
public WFrame() { today = null; GridBagLayout layout = new GridBagLayout();
IdField рдореЗрдВ рд╣рдо рдЕрдкрдиреЗ рд╢рд╣рд░ рдХреА ID рд░рд┐рдХреЙрд░реНрдб рдХрд░реЗрдВрдЧреЗ (рд╢рд╣рд░реЛрдВ рдФрд░ рд░рд╛рдЬреНрдпреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдпрд╣рд╛рдВ
weather.yandex.ru/static/cities.xml ) рдкрд╛рдИ рдЬрд╛ рд╕рдХрддреА рд╣реИред рдЦреИрд░, рд▓реЗрдмрд▓ рдореЗрдВ - рдЬрд╛рдирдХрд╛рд░реА рд╣реАред рдореИрдВ рдЖрдорддреМрд░ рдкрд░ рдЖрд▓реЛрдЪрдирд╛ рдХрд░рддрд╛ рд╣реВрдВ, рдЕрдЧрд░ рдЖрдк рдЯрд┐рдкреНрдкрдгреА рдпрд╛ рд╕рдВрд╢реЛрдзрди рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдореБрдЭреЗ рдЦреБрд╢реА рд╣реЛрдЧреАред GBC рд╡рд░реНрдЧ GridBagConstraints рдХрд╛ рдЙрддреНрддрд░рд╛рдзрд┐рдХрд╛рд░реА рд╣реИ; рдореИрдВ рдкреЛрд╕реНрдЯ рдХреЗ рдЕрдВрдд рдореЗрдВ рдЗрд╕рдХрд╛ рдХреЛрдб рджреВрдВрдЧрд╛ред
рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдПрдХ рдкреЙрдк-рдЕрдк рдореЗрдиреВ рднреА рдЬреЛрдбрд╝реВрдВрдЧрд╛ рддрд╛рдХрд┐ рдореИрдВ рд╣рд░ рдмрд╛рд░ рд╢рд╣рд░реЛрдВ рдХреЛ рдЯрд╛рдЗрдк рди рдХрд░реВрдВ:
JPopupMenu menu = new JPopupMenu(); menu.add(new AbstractAction("") { @Override public void actionPerformed(ActionEvent e) { setCity("27962"); } });
рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ, рдЖрдкрдХреЛ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рд╢рд╣рд░ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореЗрд░реЗ рд▓рд┐рдП рдкреЗрдиреНрдЬрд╝рд╛ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред рдореЗрдиреВ рдореЗрдВ рд╢рд╣рд░реЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рдЕрд▓рдЧ рд╡рд░реНрдЧ рдмрдирд╛рдирд╛ рдмреЗрд╣рддрд░ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдЕрд▓рдЧ рд╡рд┐рд╖рдп рд╣реИ, рдореИрдВрдиреЗ рдЗрд╕рд╕реЗ рдкрд░реЗрд╢рд╛рди рдирд╣реАрдВ рдХрд┐рдпрд╛ред
рдЕрдЧрд▓реА рдХрдХреНрд╖рд╛ рдЬреЛ рдореИрдВрдиреЗ рдмрдирд╛рдИ рд╣реИ, рд╡рд╣ рдореМрд╕рдо рдХреА рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд╕рд╛рде рдЪрд░ рдХреЗ рднрдВрдбрд╛рд░рдг рдХреЗ рд▓рд┐рдП рдореМрд╕рдо рд╡рд░реНрдЧ рд╣реИред рдпрд╣рд╛рдВ рдХреБрдЫ рднреА рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рд╣реИ:
public class Weather { String city; String weatherType; String imgType; String humidity;
рдЕрдЧрд▓рд╛, рдПрдХ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдмрдирд╛рдПрдВ
Document doc = null; URL url = new URL("http://export.yandex.ru/weather-ng/forecasts/" + cityID + ".xml");
рд╣рдо рдкреВрд░реНрд╡рд╛рдиреБрдорд╛рди рдХреЗ рдЯреИрдЧ рдХреЗ рд╕рд╛рде рд╡рд░реНрдЧ рдЪрд░ NodeList рдХреЛ
рдмрд╛рдВрдзрддреЗ рд╣реИрдВ (рджреЗрдЦреЗрдВ
рдирд┐рд░реНрдпрд╛рдд редyandex.ru /weather-
ng /
forecasts /
29642.xml - рдореМрд╕рдо рдкреГрд╖реНрда)
nl = doc.getElementsByTagName("forecast").item(0).getChildNodes();
рдпрд╛рдиреА рд╣рдореЗрдВ рдХреБрдЫ рдРрд╕рд╛ рдорд┐рд▓рд╛:
try { Document doc = null; URL url = new URL("http://export.yandex.ru/weather-ng/forecasts/" + cityID + ".xml");
рдЦреИрд░, рдмрдВрдзреЗ рдФрд░ рдЕрд╕рдВрддреБрд╖реНрдЯ, рдпрд╣ рд╕реАрдзреЗ рдореМрд╕рдо рдирд┐рдХрд╛рд▓рдиреЗ рдХрд╛ рд╕рдордп рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдкреВрд░реНрд╡рд╛рдиреБрдорд╛рди рдореЗрдВ рдПрдХ рдЙрддреНрддрд░рд╛рдзрд┐рдХрд╛рд░реА рддрдереНрдп рд╣реИ, рдФрд░ рдмрджрд▓реЗ рдореЗрдВ рдЗрд╕рдореЗрдВ рд╕реНрдЯреЗрд╢рди рдФрд░ рддрд╛рдкрдорд╛рди рд╣реЛрддрд╛ рд╣реИ (рдХрднреА-рдХрднреА рд╢рд╣рд░ рдХреЗ рдирд╛рдо рдкрд░ рд╣рд╡рд╛рдИ рдЕрдбреНрдбреЗ рдХрд╛ рд╕рдВрдХреЗрдд рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ)ред рдЕрдм рд╕реНрдЯреЗрд╢рди рдФрд░ рддрд╛рдкрдорд╛рди рд╕реЗ рд╣рдо рдореМрд╕рдо рдФрд░ рд╢рд╣рд░ рдХрд╛ рдирд╛рдо рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓реЗрдВрдЧреЗ:
for (int i = 0; i < nl.getLength(); i++) { Node child = nl.item(i); if (child instanceof Element) { if (child.getNodeName().equals("fact")) { Node childOfChild = null; for (int j = 0; j < child.getChildNodes().getLength(); j++) { childOfChild = child.getChildNodes().item(j); if ("station".equals(childOfChild.getNodeName())) { todayWeather.city = childOfChild.getTextContent(); } if ("temperature".equals(childOfChild.getNodeName())) todayWeather.temperature = Integer .parseInt(childOfChild.getTextContent()); if ("weather_type_short".equals(childOfChild .getNodeName())) { todayWeather.weatherType = childOfChild .getTextContent(); } if ("image".equals(childOfChild.getNodeName())) { todayWeather.imgType = childOfChild .getTextContent(); } if ("humidity".equals(childOfChild.getNodeName())) { todayWeather.humidity = childOfChild .getTextContent(); } } } if (child.getNodeName().equals("informer")) { Node childOfChild = null; for (int j =0; j<child.getChildNodes().getLength(); j++){ childOfChild = child.getChildNodes().item(j); if ((childOfChild.getNodeName().equals("temperature")) && (childOfChild.getAttributes().item(1).getTextContent().equals("night"))) { todayWeather.tomNight = childOfChild.getTextContent(); } if (childOfChild.getNodeName().equals("temperature") && (childOfChild.getAttributes().item(1).getTextContent().equals("tomorrow"))) { todayWeather.tom = childOfChild.getTextContent();} } } } } WFrame.today = todayWeather;
рдПрдХ рд▓реВрдк рдХреЗ рд╕рд╛рде, рд╣рдо рд╕рднреА рдмрдЪреНрдЪреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реЙрд░реНрдЯ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╣рдореЗрдВ рдХреЗрд╡рд▓ рдЙрди рд▓реЛрдЧреЛрдВ рдХрд╛ рдЪрдпрди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдореИрдВрдиреЗ рдирдореА рдФрд░ рдЪрд┐рддреНрд░ рдХрд╛ рдкреНрд░рдХрд╛рд░ рднреА рдЪреБрдирд╛ред рдмрд╛рдХреА рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рдм рдХреБрдЫ рдмрд╣реБрдд рд╕реНрдкрд╖реНрдЯ рд╣реИред
рдпрд╣ рдХреЗрд╡рд▓ рдмрдЯрди рдХреЗ рд▓рд┐рдП рдПрдХ рдШрдЯрдирд╛ рд╣реИрдВрдбрд▓рд░ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдмрдиреА рд╣реБрдИ рд╣реИ:
btn.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { try { String cityID = idField.getText(); if (cityID == null) throw new IOException(" ID "); WeatherParser.parse(cityID);
рдЕрдВрдд рдореЗрдВ, рдореИрдВ рдХреБрдЫ рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рдмреНрдпреЙрд▓реНрдбрдХреЛрдбрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдорд╛рдлреА рдорд╛рдВрдЧрдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛, рдореБрдЭреЗ рдЦреБрд╢реА рд╣реЛрдЧреА рдЕрдЧрд░ рдЖрдк рдЗрд╕рдореЗрдВ рдЕрдкрдиреА рдирд╛рдХ рдкреЛрдХреЗрдВрдЧреЗред рдПрдХ рдФрд░ рд╕рдорд╕реНрдпрд╛ рдЬреЛ рдореБрдЭ рдореЗрдВ рдкреИрджрд╛ рд╣реБрдИ рдФрд░ рдЬреЛ рдореИрдВрдиреЗ рдЕрднреА рднреА рд╣рд▓ рдирд╣реАрдВ рдХреА рдереА, рд╡рд╣ рдЪрд┐рддреНрд░ рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдерд╛, рдЬреЛ рдХреЗрд╡рд▓ рддрдм рд╣реА рдкреНрд░рдХрдЯ рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдлрд╝реЙрд░реНрдо рдЦреАрдВрдЪрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП рдореИрдВ рдХрд┐рд╕реА рднреА рдЙрдЪрд┐рдд рдЖрд▓реЛрдЪрдирд╛ рдХреЛ рд╕реБрдирдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реВрдВред
рдЖрдкрдХреЗ рдзреНрдпрд╛рди рдХреЗ рд▓рд┐рдП рд╕рднреА рдХрд╛ рдзрдиреНрдпрд╡рд╛рдж, рдЖрдкрдХрд╛ рджрд┐рди рд╢реБрдн рд╣реЛ!
рдкреВрд░реНрдг рдХреЛрдб:
1. рдлреНрд░реЗрдо рдХреЗ рд╕рд╛рде рд╡рд░реНрдЧ
<code> public class WFrame extends JFrame { static Weather today; JPanel panel; JTextField idField; JButton btn; JLabel label; JLabel tLabel; JLabel iLabel; Box b; static String id; static int t; Container contentPane; public WFrame() { today = null; JPopupMenu menu = new JPopupMenu(); menu.add(new AbstractAction("") { @Override public void actionPerformed(ActionEvent e) { setCity("27962"); } });
2. рдореМрд╕рдо рдХреА рдХрдХреНрд╖рд╛
public class Weather { String city; String weatherType; String imgType; String humidity;
3. рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдХреНрд▓рд╛рд╕:
public class WeatherParser { static Weather tomorrowWeather; WeatherParser(WFrame f) { tomorrowWeather = new Weather(); } public static void parse(String cityID) { Weather todayWeather = new Weather(); NodeList nl = null; try { Document doc = null; URL url = new URL("http://export.yandex.ru/weather-ng/forecasts/" + cityID + ".xml");
4. рдЦреИрд░, GBC рд╡рд░реНрдЧ
import java.awt.GridBagConstraints; public class GBC extends GridBagConstraints { public GBC(int gridx, int gridy) { this.gridx = gridx; this.gridy = gridy; } public GBC(int gridx, int gridy, int gridwidth, int gridheight) { this.gridx = gridx; this.gridy = gridy; this.gridwidth = gridwidth; this.gridheight = gridheight; } public GBC setAnchor(int anchor) { this.anchor = anchor; return this; } public GBC setFill(int fill) { this.fill = fill; return this; } public GBC setWeight(double weightx, double weighty) { this.weightx = weightx; this.weighty = weighty; return this; } public GBC setInsets(int distance) { this.insets = new java.awt.Insets( distance, distance, distance, distance); return this; } public GBC setInsets(int top, int left, int bottom, int right) { this.insets = new java.awt.Insets( top, left, bottom, right); return this; } public GBC setIpad(int ipadx, int ipady) { this.ipadx = ipadx; this.ipady = ipady; return this; } }
рд▓реЛрдЧреЛрдВ рдкрд░ рдкреБрд░рд╛рд▓реЗрдЦ