it Новости Программа Java с интерфейсом / Погодное приложение
Программа Java с интерфейсом / Погодное приложение

Программа Java с интерфейсом / Погодное приложение

3 031
17 апреля 2020 в 16:46

Язык Java по праву считается наиболее популярным и востребованным языком программирования в мире. На его основе можно создавать веб сайты, игры, программы.

Несмотря  на свою большую популярность многие из тех кто начинает его изучение останавливаются ещё на моменте создания консольных программ. Это как-то неверно, поэтому давайте развеем миф про сложность работы с Java и создадим приложение с интерфейсом, функциями и работой с API.


Установка всего

Наша программа будет на языке Джава и она должна иметь графический интерфейс. Чтобы обеспечить такую смесь лучше всего установить и работать с библиотекой JavaFx. Скачать библиотеку можно по этой ссылке


Также зайдите на сайт Oracle и скачайте Java. Рекомендуем скачать и установить Java 11, так как с Java 13 будут разного рода ошибки при работе с Javafx. 


Создание проекта

Через любую среду разработки создайте новый JavaFx проект.



После создания проекта нужно добавить библиотеку JavaFx. Если вы работаете с Intellij IDEA, то вам нужно зайти в «File - Project Structure», далее перейти в модули и добавить в качестве нового модуля все файлы из папки lib, что находится в скачанной папке JavaFx. После добавления не забываем установить галочку, а также нажать на Окей.



После заходим в настройки: «Run - Edit configuration» и в поле «VM Options» прописываем полный путь к папке JavaFx:

--module-path
D:\Java\javafx-sdk-11.0.2\lib (Вот здесь прописываете ваш путь)
--add-modules
javafx.controls,javafx.fxml


Создание дизайна

Для создания дизайна используйте программу Scene Builder. Внутри неё откройте ваш проект, а именно файл «sample.fxml». Через эту программу вы можете прописать весь дизайн для приложения. 



После перетаскивания объектов и добавления к ним стилей, вы можете добавить ID для объектов, с которыми вы будете взаимодействовать, а также вам стоит указать рабочий контроллер для обработки всех функций в приложении.



В этой же программе можно посмотреть готовый вариант дизайна, а также же можно получить шаблон кода для класса контроллера. Для этого переходим: «View - Show sample skeletone code», где мы получаем весь код и копируем его. Этот же код разместите в контроллере вашего приложения.


Создание функций

Теперь нам нужно создать весь функционал для приложения. 


В приложении мы будем получать данные о погоде. Чтобы это делать сперва зарегистрируйтесь и получите API ключ на сайте OpenWeaterMap. Также скачайте библиотеку JSON Java и импортируйте её в проект точно также, как это было сделано с JavaFx.


Теперь остается прописать весь код. Он представлен ниже вместе с комментариями:

package sample;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
import java.util.ResourceBundle;
import javafx.fxml.FXML;
import javafx.scene.control.Button;
import javafx.scene.control.TextField;
import javafx.scene.image.ImageView;
import javafx.scene.text.Text;
import org.json.JSONObject;

public class Controller {

	@FXML
	private ResourceBundle resources;

	@FXML
	private URL location;

	// Переменные, ссылающиеся на объекты из окна приложения
	@FXML
	private TextField city;

	@FXML
	private Text temp_info;

	@FXML
	private Text temp_max;

	@FXML
	private Text temp_min;

	@FXML
	private Button getData;

	@FXML
	private Text temp_feels;

	@FXML
	private ImageView image;

	@FXML
	private Text pressure;

	@FXML
	void initialize() {
		// При нажатии на кнопку
		getData.setOnAction(event -> {
			// Получаем данные из текстового поля
			String getUserCity = city.getText().trim();
			if(!getUserCity.equals("")) { // Если данные не пустые
				// Получаем данные о погоде с сайта openweathermap
				String output = getUrlContent("http://api.openweathermap.org/data/2.5/weather?q=" + getUserCity + "&appid=ВАШ_API_КЛЮЧ&units=metric");

				if (!output.isEmpty()) { // Нет ошибки и такой город есть
					JSONObject obj = new JSONObject(output);
					// Обрабатываем JSON и устанавливаем данные в текстовые надписи
					temp_info.setText("Температура: " + obj.getJSONObject("main").getDouble("temp"));
					temp_feels.setText("Ощущается: " + obj.getJSONObject("main").getDouble("feels_like"));
					temp_max.setText("Максимум: " + obj.getJSONObject("main").getDouble("temp_max"));
					temp_min.setText("Минимум: " + obj.getJSONObject("main").getDouble("temp_min"));
					pressure.setText("Давление: " + obj.getJSONObject("main").getDouble("pressure"));
				}
			}
		});
	}

	// Обработка URL адреса и получение данных с него
	private static String getUrlContent(String urlAdress) {
		StringBuffer content = new StringBuffer();

		try {
				URL url = new URL(urlAdress);
				URLConnection urlConn = url.openConnection();

				BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(urlConn.getInputStream()));
				String line;

				while((line = bufferedReader.readLine()) != null) {
					content.append(line + "\n");
				}
				bufferedReader.close();
			} catch(Exception e) {
				System.out.println("Такой город был не найден!");
			}
			return content.toString();
	}

}

Видео на эту тему

Также вы можете просмотреть детальное видео по разработке данного приложения:




Дополнительный курс

На нашем сайте также есть углубленный курс по изучению языка Java. В ходе огромной программы вы изучите не только язык Java, но также научитесь создавать веб сайты, программы под ПК, приложения под Андроид и многое другое. За курс вы изучите массу нового и к концу программы будете уметь работать с языком Java и создавать на нём полноценные проекты.


Больше интересных новостей

Комментарии для сайта Cackle