Задать вопрос
PersonalAngel
@PersonalAngel

Как реализовать выпадающий список в Java?

Делаю лабораторную работу, есть задача реализовать счетчик калорий, у меня по условию там должно быть 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();  //запускает жизненный цикл приложения
    }
}
  • Вопрос задан
  • 333 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Java
Седой и строгий
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы