рд╢реБрд░реБрдЖрддреА рдФрд░ рдкреБрд░рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рд╡рд╛ рдореЗрдВ рдореМрд╕рдо

рдЫрд╡рд┐

рдореИрдВ рдЫреБрдЯреНрдЯреА рдХреЗ рдЗрдВрддрдЬрд╛рд░ рдХреЗ рдЗрд╕ рдЦреВрдмрд╕реВрд░рдд рджрд┐рди рдкрд░ рд╕рднреА рдХреЛ рд╢реБрднрдХрд╛рдордирд╛рдПрдВ рджреЗрддрд╛ рд╣реВрдВ, рдпрд╣ рд╣рдм рдкрд░ рдореЗрд░рд╛ рдкрд╣рд▓рд╛ рд▓реЗрдЦ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдореИрдВ рдпреИрдВрдбреЗрдХреНрд╕ рдХреЗ рдЦреБрд▓реЗ рдореМрд╕рдо рдПрдкреАрдЖрдИ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдХрд╣рд╛рдиреА рдЪрд╛рд╣реВрдВрдЧрд╛ рд▓реЗрдЦ рд╢реБрд░реБрдЖрддреА рдХреЗ рд▓рд┐рдП рдЬрд╛рд╡рд╛ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХрд╛ рдПрдХ рдирд┐рд░рдВрддрд░рддрд╛ рд╣реИред рдпрд╣ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рд▓реЗрдЦ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд╣реИ, рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рднрд╛рд╖рд╛ рд╕реАрдЦрдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ рд╣реИ рдпрд╛ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рдЗрд╕ рд╕реЗрд╡рд╛ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдирд╣реАрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ, рдореБрдЭреЗ рдХрд┐рд╕реА рднреА рдкрд╛рдардХ (рдУрд╣ рдЯреЙрдЯреЛрд▓реЙрдЬреА ...) рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреАред рдпреИрдВрдбреЗрдХреНрд╕ рдЙрди рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫрд╛ рдЕрд╡рд╕рд░ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рдЕрдкрдиреЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдпрд╛ рдЕрдкрдиреА рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рдореМрд╕рдо рд░рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдФрд░ рдпреИрдВрдбреЗрдХреНрд╕ рдЬреЛ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рд╡рд╣ рдкрд░реНрдпрд╛рдкреНрдд рд╕реЗ рдЕрдзрд┐рдХ рд╣реИред

рдЖрдк рд╕рдкреНрддрд╛рд╣ рдореЗрдВ рдХрд┐рд╕реА рднреА рджрд┐рди рдореМрд╕рдо рдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рдЪреБрди рд╕рдХрддреЗ рд╣реИрдВред рд╡рд┐рднрд┐рдиреНрди рд░рд╛рдЬреНрдпреЛрдВ (рд╕реНрдкрд╖реНрдЯ, рдмрд╛рджрд▓, рдЖрджрд┐), рдХрдИ рднрд╛рд╖рд╛рдПрдВ (рд╢рд╣рд░реЛрдВ рдХреЗ рд▓рд┐рдП, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд░реВрд╕реА рдФрд░ рдЕрдВрдЧреНрд░реЗрдЬреА, рд╕реАрдЖрдИрдПрд╕ рджреЗрд╢реЛрдВ рдХреА рд╕рднреА рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд░рд╛рдЬреНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдФрд░ рди рдХреЗрд╡рд▓: рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ, рдРрдЬрд╝, рдЕрдХреАрдХ, рдЕрд╢реНрдп, рдЖрджрд┐), рдореИрдВ рдирд╣реАрдВ рдХрд░рддрд╛ рднреВрдЧреЛрд▓ рдореЗрдВ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЬрд╛рдирдХрд╛рд░реА рд╕рднреА рджреЗрд╢реЛрдВ рдХреЗ рд▓рд┐рдП рд╣реИ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдореМрд╕рдо рдХреА рд╕реНрдерд┐рддрд┐ рдХреА рд▓рдШреБ рддрд╕реНрд╡реАрд░реЗрдВ рднреА рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдЗрд╕ рд╕реЗрд╡рд╛ рдХреЛ рдЪреБрдирд╛ рдПрдХ рд╕рд░рд▓ рдФрд░ рд╕реНрдкрд╖реНрдЯ рд╕рдВрд░рдЪрдирд╛ рд╣реИред рдореИрдВ рддреБрд░рдВрдд рдЖрд░рдХреНрд╖рдг рдХрд░ рджреВрдВрдЧрд╛, рдЙрдиреНрд╣реЛрдВрдиреЗ рдореБрдЭреЗ "рд╡рд┐рдЬреНрдЮрд╛рдкрди" рдХреЗ рд▓рд┐рдП рднреБрдЧрддрд╛рди рдирд╣реАрдВ рдХрд┐рдпрд╛ред


рдмрд╛рд╣рд░реА рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рд╡рд╛рд▓рд╛ рдПрдХ рд╡рд░реНрдЧ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ, рдореИрдВ рд╕рд┐рд░реНрдл рдХреЛрдб рджреЗ рджреВрдВрдЧрд╛ рддрд╛рдХрд┐ рддрдм рдХреЛрдИ рд╡рд┐рд╕рдВрдЧрддрд┐рдпрд╛рдВ рди рд╣реЛрдВред рдореИрдВ рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдореБрдЭреЗ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдореБрдЭреЗ рдЕрдкрдирд╛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рдореЗрд░реЗ рдЧрд░реАрдм:

public WFrame() { today = null; GridBagLayout layout = new GridBagLayout(); //  ,       ,    setTitle("Weather"); setPreferredSize(new Dimension(350, 300)); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setLocationRelativeTo(null); setVisible(true); contentPane = getContentPane(); panel = new JPanel(); panel.setLayout(layout); idField = new JtextField(); idField.setColumns(6); //   xml,      //   btn = new JButton("  "); //  ,  GUI   ,   label = new JLabel("   ID  "); label.setFont(new Font("Verdana", Font.PLAIN, 14)); tLabel = new JLabel(" "); tLabel.setFont(new Font("Verdana", Font.PLAIN, 14)); iLabel = new JLabel(); panel.add(label, new GBC(0, 0, 2, 1).setFill(GBC.NORTH).setWeight(100, 0)); panel.add(iLabel, new GBC(0, 1, 2, 1).setFill(GBC.NORTH).setWeight(100, 0)); panel.add(btn, new GBC(0, 3, 2, 1).setFill(GBC.NORTH).setWeight(100, 0)); panel.add(idField, new GBC(0, 2, 2, 1).setAnchor(GBC.NORTH) .setFill(GBC.HORIZONTAL).setIpad(50, 0)); panel.add(tLabel, new GBC(0, 4, 2, 1).setAnchor(GBC.NORTH) .setFill(GBC.HORIZONTAL).setIpad(50, 0)); add(panel); panel.setComponentPopupMenu(menu); pack(); } 


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;//  String tom, tomNight; int temperature; public String toString() { return "Weather[city= " + city + ", weatherType=" + weatherType + ", temperature= " + temperature + ",humidity= " + humidity + "]"; } } 


рдЕрдЧрд▓рд╛, рдПрдХ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдмрдирд╛рдПрдВ
 Document doc = null; URL url = new URL("http://export.yandex.ru/weather-ng/forecasts/" + cityID + ".xml"); //     ,     //      URLConnection uc = url.openConnection(); InputStream is = uc.getInputStream();//  DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db = dbf.newDocumentBuilder(); doc = db.parse(is);//  doc.getDocumentElement().normalize(); 


рд╣рдо рдкреВрд░реНрд╡рд╛рдиреБрдорд╛рди рдХреЗ рдЯреИрдЧ рдХреЗ рд╕рд╛рде рд╡рд░реНрдЧ рдЪрд░ 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"); //     ,     //      URLConnection uc = url.openConnection(); InputStream is = uc.getInputStream();//  DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db = dbf.newDocumentBuilder(); doc = db.parse(is);//  doc.getDocumentElement().normalize(); nl = doc.getElementsByTagName("forecast").item(0).getChildNodes(); //       } catch (Exception ex) { JOptionPane.showMessageDialog(null, "     "); ex.printStackTrace(); } 


рдЦреИрд░, рдмрдВрдзреЗ рдФрд░ рдЕрд╕рдВрддреБрд╖реНрдЯ, рдпрд╣ рд╕реАрдзреЗ рдореМрд╕рдо рдирд┐рдХрд╛рд▓рдиреЗ рдХрд╛ рд╕рдордп рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдкреВрд░реНрд╡рд╛рдиреБрдорд╛рди рдореЗрдВ рдПрдХ рдЙрддреНрддрд░рд╛рдзрд┐рдХрд╛рд░реА рддрдереНрдп рд╣реИ, рдФрд░ рдмрджрд▓реЗ рдореЗрдВ рдЗрд╕рдореЗрдВ рд╕реНрдЯреЗрд╢рди рдФрд░ рддрд╛рдкрдорд╛рди рд╣реЛрддрд╛ рд╣реИ (рдХрднреА-рдХрднреА рд╢рд╣рд░ рдХреЗ рдирд╛рдо рдкрд░ рд╣рд╡рд╛рдИ рдЕрдбреНрдбреЗ рдХрд╛ рд╕рдВрдХреЗрдд рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ)ред рдЕрдм рд╕реНрдЯреЗрд╢рди рдФрд░ рддрд╛рдкрдорд╛рди рд╕реЗ рд╣рдо рдореМрд╕рдо рдФрд░ рд╢рд╣рд░ рдХрд╛ рдирд╛рдо рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓реЗрдВрдЧреЗ:

 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); //      label.setText(today.city + "(): " + today.temperature + " ; " + today.weatherType + " :" + today.humidity + " %"); iLabel = new JLabel(new ImageIcon(ImageIO.read(new URL( "http://img.yandex.net/i/wiz" + today.imgType + ".png")))); tLabel.setText("  /: "+ today.tomNight+"/"+ today.tom); //    } catch (IOException e1) { e1.printStackTrace(); } contentPane.add(iLabel); } }); 

рдЕрдВрдд рдореЗрдВ, рдореИрдВ рдХреБрдЫ рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рдмреНрдпреЙрд▓реНрдбрдХреЛрдбрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдорд╛рдлреА рдорд╛рдВрдЧрдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛, рдореБрдЭреЗ рдЦреБрд╢реА рд╣реЛрдЧреА рдЕрдЧрд░ рдЖрдк рдЗрд╕рдореЗрдВ рдЕрдкрдиреА рдирд╛рдХ рдкреЛрдХреЗрдВрдЧреЗред рдПрдХ рдФрд░ рд╕рдорд╕реНрдпрд╛ рдЬреЛ рдореБрдЭ рдореЗрдВ рдкреИрджрд╛ рд╣реБрдИ рдФрд░ рдЬреЛ рдореИрдВрдиреЗ рдЕрднреА рднреА рд╣рд▓ рдирд╣реАрдВ рдХреА рдереА, рд╡рд╣ рдЪрд┐рддреНрд░ рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдерд╛, рдЬреЛ рдХреЗрд╡рд▓ рддрдм рд╣реА рдкреНрд░рдХрдЯ рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдлрд╝реЙрд░реНрдо рдЦреАрдВрдЪрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП рдореИрдВ рдХрд┐рд╕реА рднреА рдЙрдЪрд┐рдд рдЖрд▓реЛрдЪрдирд╛ рдХреЛ рд╕реБрдирдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реВрдВред

рдЖрдкрдХреЗ рдзреНрдпрд╛рди рдХреЗ рд▓рд┐рдП рд╕рднреА рдХрд╛ рдзрдиреНрдпрд╡рд╛рдж, рдЖрдкрдХрд╛ рджрд┐рди рд╢реБрдн рд╣реЛ!

рдкреВрд░реНрдг рдХреЛрдб:

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"); } }); //,    ,      // http://weather.yandex.ru/static/cities.xml GridBagLayout layout = new GridBagLayout(); //  ,       ,    setTitle("Weather"); setPreferredSize(new Dimension(350, 300)); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setLocationRelativeTo(null); setVisible(true); contentPane = getContentPane(); panel = new JPanel(); panel.setLayout(layout); idField = new JTextField(); idField.setColumns(6); idField.addKeyListener(new KeyListener() { @Override public void keyTyped(KeyEvent arg0) { } @Override public void keyReleased(KeyEvent e) { if (e.getKeyCode() == KeyEvent.VK_ENTER) { btn.doClick(); } } @Override public void keyPressed(KeyEvent arg0) { } }); //   xml,      //   btn = new JButton("  "); 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); //      label.setText(today.city + "(): " + today.temperature + " ; " + today.weatherType + " :" + today.humidity + " %"); iLabel = new JLabel(new ImageIcon(ImageIO.read(new URL( "http://img.yandex.net/i/wiz" + today.imgType + ".png")))); tLabel.setText("  /: "+ today.tomNight+"/"+ today.tom); //    } catch (IOException e1) { e1.printStackTrace(); } contentPane.add(iLabel); } }); //  ,  GUI   ,   label = new JLabel("   ID  "); label.setFont(new Font("Verdana", Font.PLAIN, 14)); tLabel = new JLabel(" "); tLabel.setFont(new Font("Verdana", Font.PLAIN, 14)); iLabel = new JLabel(); panel.add(label, new GBC(0, 0, 2, 1).setFill(GBC.NORTH).setWeight(100, 0)); panel.add(iLabel, new GBC(0, 1, 2, 1).setFill(GBC.NORTH).setWeight(100, 0)); panel.add(btn, new GBC(0, 3, 2, 1).setFill(GBC.NORTH).setWeight(100, 0)); panel.add(idField, new GBC(0, 2, 2, 1).setAnchor(GBC.NORTH) .setFill(GBC.HORIZONTAL).setIpad(50, 0)); panel.add(tLabel, new GBC(0, 4, 2, 1).setAnchor(GBC.NORTH) .setFill(GBC.HORIZONTAL).setIpad(50, 0)); add(panel); panel.setComponentPopupMenu(menu); pack(); } public static void main(String[] args) { // loginWithProxy(); javax.swing.SwingUtilities.invokeLater(new Runnable() { public void run() { WFrame frame = new WFrame(); frame.setDefaultLookAndFeelDecorated(true); } }); } public void setCity(String id) { this.id = id; idField.setText(id); } } 


2. рдореМрд╕рдо рдХреА рдХрдХреНрд╖рд╛

 public class Weather { String city; String weatherType; String imgType; String humidity;//  String tom, tomNight; int temperature; public String toString() { return "Weather[city= " + city + ", weatherType=" + weatherType + ", temperature= " + temperature + ",humidity= " + 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"); //     ,     //      URLConnection uc = url.openConnection(); InputStream is = uc.getInputStream();//  DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db = dbf.newDocumentBuilder(); doc = db.parse(is);//  doc.getDocumentElement().normalize(); nl = doc.getElementsByTagName("forecast").item(0).getChildNodes(); //       } catch (Exception ex) { JOptionPane.showMessageDialog(null, "     "); ex.printStackTrace(); } 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; } } 


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; } } 


рд▓реЛрдЧреЛрдВ рдкрд░ рдкреБрд░рд╛рд▓реЗрдЦ

Source: https://habr.com/ru/post/In164101/


All Articles