Делаю лабораторную работу, есть задача реализовать счетчик калорий, у меня по условию там должно быть 5 продуктов.
Вопросов два:
1. Можно ли сделать выпадающий список для моих продуктов?
2. Как мне оттуда подцепить значения для дальнейшей калькуляции?
Я совсем новичок, если можно, то нужен способ попроще.
Вот код моей программы.
package example;
import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.TextArea;
import javafx.scene.control.TextField;
import javafx.scene.effect.Shadow;
import javafx.scene.layout.Background;
import javafx.scene.layout.BackgroundFill;
import javafx.scene.layout.GridPane;
import javafx.scene.paint.Color;
import javafx.scene.text.Font;
import javafx.scene.text.FontWeight;
import javafx.scene.text.Text;
import javafx.stage.Stage;
import javax.swing.*;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;
import java.util.TimeZone;
import static java.awt.Color.green;
public class Main extends Application {
public static GridPane initRootLayout() { //вернет значение GridPain
GridPane root = new GridPane(); // создание корневого элемента
// задаем параметры
root.setAlignment(Pos.CENTER);
root.setHgap(20); // расстояния между ячейками по горизонтали
root.setVgap(20); // по вертикали
root.setPadding(new Insets(25)); //отступы от краев сцены
Text scenetitle = new Text("Calculation of calorie");
scenetitle.setFill(Color.DARKBLUE);
Font fontBig = Font.font("Tahoma", FontWeight.BOLD, 25);
scenetitle.setFont(fontBig ); //меняем шрифт заголовка
// 0 столбец и 0 строка, 2 столбца занимает и 1 строку
// заголовок растянется на всю 1 строку
root.add(scenetitle, 0, 0, 2, 1);
Label product = new Label("Product:"); // метка для продукта
product.setFont(fontBig);
root.add(product, 0, 1); //1й столб 2строка
TextField productTextField = new TextField(); // создаем поле
productTextField.setFont(fontBig); //настраиваем шрифт
root.add(productTextField, 1, 1); // добавляем элемент в гридпейнт
//еще одну метку и поле
Label weight = new Label("Weight:");
weight.setFont(fontBig);
root.add(weight, 0, 2); //распологаем в 3й строке
TextField valueWeight = new TextField(); // текстовое поле для ввода веса
valueWeight.setFont(fontBig);
root.add(valueWeight, 1, 2);
Text result = new Text("Caloric calculation");
// result.setFill(Color.DARKGOLDENROD);
result.setFont(fontBig);
root.add(result, 0, 6);
// текст для вывода результата
Button btn = new Button("OK");
btn.setFont(fontBig);
/* чтобы кнопка работала добавляем описание действия
стандарный метод ивент , событие которого - нажатие на кнопку */
btn.setOnAction(event -> {
String weightOfProduct = valueWeight.getText();
if(weightOfProduct.matches("[0-9]+")) { //проверяем что польз. ввел число
// вычисляем вес и преобразуем сроку в целое число
int w = Integer.parseInt(weightOfProduct); //вес
int sausage = 301 * w / 100;
result.setText(productTextField.getText() + " is " + sausage + " calories");
} else {
result.setFill(Color.FIREBRICK);
result.setText("Error");
}
});
root.add(btn, 1, 5);
return root;
}
@Override
public void start(Stage primaryStage) throws Exception {
GridPane root = initRootLayout();
Scene scene = new Scene(root, 600, 500);
primaryStage.setTitle("Calorie counter");
primaryStage.setScene(scene);
primaryStage.show(); //делаем окно приложения видимым
}
public static void main(String[] args) { // создаем мейн
launch(); //запускает жизненный цикл приложения
}
}