2014-01-19 2 views
1

Я создал свое приложение с помощью scriptbuilder для javafx. У меня есть форма, где человек должен загрузить изображение. Я использовал этот кодЗагрузка изображения в ImageView с помощью кода

public void photoChooser(ActionEvent evt) { 
    System.out.println("photoChooser method is called"); 
    try{ 
     FileChooser fileChooser= new FileChooser(); 
     fileChooser.setTitle("Choose a file"); 
     File file = fileChooser.showOpenDialog(stagehere); 
     if(file != null){ 
      System.out.println(file); 
      String img = file.toString(); 
      //Image image = new ImageIcon(img);   

      try{ 

     // image= new Image(); 
      Image image = new Image(img); 

      } catch (Exception e) {System.out.println("Can't upload image " + e);} 


      //employeeImage.setImage(image); 
      try{ 
      // employeeImage.setImage(image); 
      } catch(Exception e){System.out.println("Can't set the image" + e);} 
      employeeImage.setFitWidth(150); 
      employeeImage.setFitHeight(150); 
     } 

И я получил эту ошибку photoChooser method is called A:\images\fb\status\asd.jpg Can't upload image java.lang.IllegalArgumentException: Invalid URL: unknown protocol: a

+0

Пожалуйста, отметьте комментарий fabian как принятый ответ, потому что он работает, и это то, о чем вы просили. – Galya

ответ

4

Конструктор Image ожидает URL, а не путь к файлу. Поэтому, если в строке есть «:», все до этой точки интерпретируется как протокол (обычно что-то вроде http, file или ftp).

Вы должны изменить линию

String img = file.toString(); 

в

String img = file.toURI().toURL().toString(); 

Это получает URL из файла перед преобразованием в строку. Я сначала конвертировал в URI, так как File.toURL устарел, и это рекомендуемое «обходное решение».

+0

Спасибо. Это то, чего я хотел. – oldvipera

Смежные вопросы