Разные изображения в JavaFx - PullRequest
       0

Разные изображения в JavaFx

0 голосов
/ 23 ноября 2018

Мой проект работает, но я хочу немного обновить для этого.И у меня есть вопрос.Как добавить к этому проекту изображение, которое будет отличаться каждый раз, если?Я пытался использовать ImageView, но я не знаю, как правильно это сделать.Пожалуйста, дайте несколько советов.

package sample;

import javafx.fxml.FXML;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;


public class Controller {
    @FXML
    private Label label;
    @FXML
    private TextField weightText;
    @FXML
    private TextField heightText;
    @FXML
    private Label label2;

    @FXML
    public void count() {

        double bmi = 0;
        int bmi2 = 0;
        double weight = 0;
        double height = 0;
        label2.setText("");


        try {
            weight = Double.parseDouble(weightText.getText());
            height = Double.parseDouble(heightText.getText());

            if (weight > 0 && wzrost > 0) {
                bmi = (weight / (height* height)) * 100;
                bmi2 = (int) bmi;
                bmi = (double) bmi2 / 100;
                if (bmi > 30) {
                    label.setText("Your'e too fat. Your bmi is:  " + bmi);
                } else if (bmi > 25 && bmi < 30) {
                    label.setText("Little to much weight. Your bmi is: "+bmi);
                } else if (bmi > 18.5 && bmi < 25) {
                    label.setText("Great shape. Your bmi is: " + bmi);
                } else {
                    label.setText("Your'e to skinny.Your bmi is:" + bmi);
                }
            } else {
                label.setText("Wrong values");
            }

        } catch (Exception e) {
            label2.setText("Use dot");
            label.setText("Wrong values!");
        }
    }
}

Ответы [ 2 ]

0 голосов
/ 23 ноября 2018

Я отвечу на вопрос в соответствии с тем, что я понял:

Вам необходимо добавить ImageView к вашему контроллеру ( и к вашему файлу fxmlконечно):

@FXML 
private ImageView imageView;

ваши if заявления становятся:

Image image;
      if (weight > 0 && wzrost > 0) {
                    bmi = (weight / (height* height)) * 100;
                    bmi2 = (int) bmi;
                    bmi = (double) bmi2 / 100;
                    if (bmi > 30) {
                          image = new Image("TooFat.png");
                          label.setText("Your'e too fat. Your bmi is:  " + bmi);
                    } else if (bmi > 25 && bmi < 30) {
                          image = new Image("LittleTooMuch.png");
                          label.setText("Little to much weight. Your bmi is: "+bmi);
                    } else if (bmi > 18.5 && bmi < 25) {
                          image = new Image("GreatShape.png");
                          label.setText("Great shape. Your bmi is: " + bmi);
                    } else {
                          image = new Image("Skinny.png");
                          label.setText("You're to skinny.Your bmi is:" + bmi);
                    }
                } else {
                    image = new Image("WrongValues.png");
                    label.setText("Wrong values");
                }
    }
    imageView.setImage(image);

PS: поместите изображения в ваш проект и измените путь соответственно Надеюсь, что это отвечает на ваш вопрос

0 голосов
/ 23 ноября 2018

Неясно, к чему вы хотите добавить изображение, поэтому я предполагаю, что оно будет содержаться в каком-то объекте Pane (называемом YOUR_PANE), но это может быть что-то еще, что расширяетNode, например AnchorPane или VBox.В конце концов это то, что будет содержаться в Scene, используемом вашим текущим Stage

Сначала вам понадобится ссылка на изображение, которое вы хотите загрузить, что можно сделать с помощьюa InputStream:

//Creating an image 
Image image = new Image(new FileInputStream("PATH_TO_IMAGE"));

Используя это изображение, вы можете создать ImageView, который является контейнером изображений JavaFX (используется несколько примеров значений).

  //Setting the image view 
  ImageView imageView = new ImageView(image); 

  //Setting the position of the image 
  imageView.setX(50); 
  imageView.setY(25); 

  //setting the fit height and width of the image view 
  imageView.setFitHeight(455); 
  imageView.setFitWidth(500);

InВ вашем примере вы хотите изменить изображение в зависимости от результата ваших операторов If, чтобы вы могли изменить путь к изображению следующим образом:

String imagePath = "C://defaultImage.jpg";

try {
        weight = Double.parseDouble(weightText.getText());
        height = Double.parseDouble(heightText.getText());

        if (weight > 0 && wzrost > 0) {
            bmi = (weight / (height* height)) * 100;
            bmi2 = (int) bmi;
            bmi = (double) bmi2 / 100;
            if (bmi > 30) {
                label.setText("Your'e too fat. Your bmi is:  " + bmi);
                imagePath = "C://image1.jpg"
            } else if (bmi > 25 && bmi < 30) {
                label.setText("Little to much weight. Your bmi is: "+bmi);
                imagePath = "C://image2.jpg"
            } else if (bmi > 18.5 && bmi < 25) {
                label.setText("Great shape. Your bmi is: " + bmi);
                imagePath = "C://image3.jpg"
            } else {
                label.setText("Your'e to skinny.Your bmi is:" + bmi);
                imagePath = "C://image4.jpg"
            }
        } else {
            label.setText("Wrong values");
        }

        Image image = new Image(new FileInputStream(imagePath));
        //Setting the image view 
        ImageView imageView = new ImageView(image); 

        //Setting the position of the image 
        imageView.setX(50); 
        imageView.setY(25); 

        //setting the fit height and width of the image view 
        imageView.setFitHeight(455); 
        imageView.setFitWidth(500);

        //Adding the image to the pane you want it to be displayed in
        YOUR_PANE.getChildren().add(imageView);

    } catch (Exception e) {
        label2.setText("Use dot");
        label.setText("Wrong values!");
    }

Это предполагает, что вы создаете свой графический интерфейс полностью вкод, но тот же эффект может быть достигнут с помощью файлов FXML, что имеет много преимуществ ( вот что Оркаль должен сказать ).Одним из преимуществ является то, что вы можете использовать инструмент под названием Scene Builder , который позволяет создавать графический интерфейс с помощью интерфейса перетаскивания.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...