пытаясь вернуть два значения из метода - PullRequest
0 голосов
/ 25 мая 2018

Я запускаю графический интерфейс для отображения каждого изображения из базы данных MySQL, он работал нормально до того, как у меня не возникло проблем с отображением изображения при нажатии следующей кнопки, СЕЙЧАС я хочу вернуть не только изображение, но и идентификатор изтот же метод, поэтому я изменил тип «Изображение» на PAIR, но я не понимаю, как разделить две переменные, возвращаемые этим методом:

Пример пары:

    public Pair<Integer,Image> image2()throws SQLException
        {
            int id;

            try {

                boolean anyResults = false;

                if (rs.next())
                {

                    anyResults = true;

                    Blob blob = rs.getBlob("image");

                    id = rs.getInt("id");


                    InputStream in = blob.getBinaryStream(1, blob.length());


                    BufferedImage image = ImageIO.read(in);


                    Image image1 = SwingFXUtils.toFXImage(image,null);


                    return new Pair<>(id, image1);

                }
                else if (!anyResults)
                {
                    JOptionPane.showMessageDialog(null, "Not Found");
                }


            } catch (Exception e)
            {
                e.printStackTrace();
            }

            return null;
        }

пример следующего нажатия кнопки:

public void NextButtomClicked() throws SQLException
    {
        //  this is what i used before =>   Image image1 = sql.image2();

        Pair<Integer, Image> image1 = sql.image2();

        this.imageView.setImage(image1);


    }

Ответы [ 2 ]

0 голосов
/ 25 мая 2018

Вы получаете оба значения, в вашей паре нет ничего плохого.

Впоследствии, если вы установите imageView.image на Pair<>, который не работает.

Ваш image1больше не типа Image, а типа Pair.

Ваш NextButtomClicked() должен выглядеть примерно так:

public void NextButtomClicked() throws SQLException {
    Pair<Integer, Image> pair = sql.image2();

    this.imageView.setImage(pair.getValue());
    this.imageView.setId(pair.getKey());
}

pair.getValue() возвращает второй параметр вашего Pair<>.В вашем случае Image.

pair.getKey() возвращает первый параметр вашего Pair<>.В вашем случае Integer (ID).

0 голосов
/ 25 мая 2018
Pair<Integer, Image> pair = sql.image2();
Integer id = pair.getKey();
Image image = pair.getValue();
// now do what you want with id and image

Вероятно, вам также следует обработать null регистр, поскольку ваш метод может его вернуть.

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