Форум программистов, компьютерный форум, киберфорум
Наши страницы
JavaFX
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
Гаджи
0 / 0 / 1
Регистрация: 07.02.2013
Сообщений: 56
1

Получить изображение в JavaFx

26.04.2016, 11:44. Просмотров 928. Ответов 4
Метки нет (Все метки)

Подскажите пожалуйста. Закинул изображение в папку с проектом и пытаюсь получить изображение следующим образом:

Java
1
Image img = new Image("img.png");

Выдает ошибку:
Caused by: java.lang.IllegalArgumentException: Invalid URL or resource not found at javafx.scene.image.Image.validateUrl(Image.java:1110)

Пишу так:
Java
1
Image img = new Image("C:/img/img.png");
Выдает ошибку:
Caused by: java.net.MalformedURLException: unknown protocol: c
at java.net.URL.<init>(URL.java:600)
at java.net.URL.<init>(URL.java:490)
at java.net.URL.<init>(URL.java:439)
at javafx.scene.image.Image.validateUrl(Image.java:1115)

А если написать так:
Java
1
Image img = new Image(new FileInputStream("img.png"));

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

И еще если получать изображение через поток ввода FileInputStream, нужно ли использовать try catch? И почему да или нет?

Добавлено через 2 часа 18 минут
Подскажет кто-нибудь?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.04.2016, 11:44
Ответы с готовыми решениями:

Получить границу круга (JavaFX)
Добрый день. Подскажите пожалуйста, как получить точную границу круга. Пытался получить следующим...

JavaFX: Получить объект с Controller
NetBeans сгенерил проект: есть SampleController.java Sample.fxml и &quot;мой класс&quot;(extends...

Получить cookies из загруженной страницы в webview javafx
нужно в cookies найти параметр ssoid

Как получить цвет пикселя в JavaFx Canvas
Собственно вопрос, как получить цвет одного пикселя из GraphicsContext. Такая простая вещь, а не...

JavaFX + Scene Builder как получить значение с TextField
Я только начинаю учить javaFX, поэтому, может это и глупый вопрос, но я запутался. Приложение...

4
Николай Б
62 / 62 / 58
Регистрация: 19.01.2016
Сообщений: 152
26.04.2016, 19:42 2
Java
1
Image img = new Image(getClass().getResourceAsStream("img.png"));
И еще если получать изображение через поток ввода FileInputStream, нужно ли использовать try catch? И почему да или нет?
Лучший ответ найдешь в книге по Java.
0
Гаджи
0 / 0 / 1
Регистрация: 07.02.2013
Сообщений: 56
26.04.2016, 20:14  [ТС] 3
Цитата Сообщение от Николай Б Посмотреть сообщение
Java
1
Image img = new Image(getClass().getResourceAsStream("img.png"));


Лучший ответ найдешь в книге по Java.

У меня так тоже не работает.. Ошибку выкидывает вот такую

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Exception in Application start method
Exception in thread "main" java.lang.RuntimeException: Exception in Application start method
    at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:917)
    at com.sun.javafx.application.LauncherImpl.lambda$launchApplication$152(LauncherImpl.java:182)
    at com.sun.javafx.application.LauncherImpl$$Lambda$2/284720968.run(Unknown Source)
    at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.NullPointerException: Input stream must not be null
    at javafx.scene.image.Image.validateInputStream(Image.java:1109)
    at javafx.scene.image.Image.<init>(Image.java:694)
    at GERBERT_SHILDT.GLAVA_34_JAVA_FX.Image.ImageDemo.start(ImageDemo.java:44)
    at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$159(LauncherImpl.java:863)
    at com.sun.javafx.application.LauncherImpl$$Lambda$52/1910482613.run(Unknown Source)
    at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$172(PlatformImpl.java:326)
    at com.sun.javafx.application.PlatformImpl$$Lambda$48/1273519669.run(Unknown Source)
    at com.sun.javafx.application.PlatformImpl.lambda$null$170(PlatformImpl.java:295)
    at com.sun.javafx.application.PlatformImpl$$Lambda$50/238104024.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at com.sun.javafx.application.PlatformImpl.lambda$runLater$171(PlatformImpl.java:294)
    at com.sun.javafx.application.PlatformImpl$$Lambda$49/693681679.run(Unknown Source)
    at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95)
    at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
    at com.sun.glass.ui.win.WinApplication.lambda$null$145(WinApplication.java:101)
    at com.sun.glass.ui.win.WinApplication$$Lambda$38/358475030.run(Unknown Source)
    ... 1 more
0
Николай Б
62 / 62 / 58
Регистрация: 19.01.2016
Сообщений: 152
26.04.2016, 20:24 4
Тогда добавь к имени файла имя папки в которой он расположен
Image img = new Image(getClass().getResourceAsStream("img/img.png"));

либо расположи картинку в той же директориии что и java класс.
0
Гаджи
0 / 0 / 1
Регистрация: 07.02.2013
Сообщений: 56
27.04.2016, 08:11  [ТС] 5
Цитата Сообщение от Николай Б Посмотреть сообщение
Тогда добавь к имени файла имя папки в которой он расположен
Image img = new Image(getClass().getResourceAsStream("img/img.png"));

либо расположи картинку в той же директориии что и java класс.
Тоже самая ошибка. Может я что-то не так сделал? Вот весь мой код:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
package GERBERT_SHILDT.GLAVA_34_JAVA_FX.Image;
 
import javafx.application.Application;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.FlowPane;
import javafx.stage.Stage;
 
import java.io.FileInputStream;
import java.io.FileNotFoundException;
 
public class ImageDemo extends Application {
 
    public static void main(String[] args) {
        //Запускаем приложение вызвав метод launch()
        launch(args);
    }
 
    //Переопределяем метод start()
    public void start(Stage myStage) throws FileNotFoundException {
        //Добавляем заголовок к подмосткам
        myStage.setTitle("Использование изображений в JavaFX");
 
        //Используем панель поточной компоновки FlowPane в качестве корневого узла
        FlowPane rootNode = new FlowPane();
 
        //Выравниваем элементы управления по центру
        rootNode.setAlignment(Pos.CENTER);
 
        //Создаем сцену
        Scene myScene = new Scene(rootNode, 800, 600);
 
        //Устанавливаем сцену на подмостках
        myStage.setScene(myScene);
 
        //Создаем объект изображения
        Image img = new Image(getClass().getResourceAsStream("img.png"));
 
        //Создаем представление изображения
        ImageView imgView = new ImageView(img);
 
        //Вводим изображение в граф сцены. Нельзя вводить изображение в граф сцены, не создав ее представление
        rootNode.getChildren().add(imgView);
 
        //Отобразить сцену с подмостками
        myStage.show();
    }
}
0
27.04.2016, 08:11
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.04.2016, 08:11

JavaFX. Самое первое задание в JavaFX вместо Java. Не используя вспомогательных объектов
Всем привет, уважаемые форумчане! Мы работали на программировании в вузе на Java. Теперь дали...

Swing --> JavaFX, Переписать графический компонент в JavaFX
Всем привет! Только начал изучать Java. Пишу программу крестики-нолики(игра). Написал...

Отобразить javafx.scene.image.Image в javafx.scene.layout.GridPane
Подскажите, пожалуйста, как отобразить javafx.scene.image.Image в javafx.scene.layout.GridPane.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru