title: JavaFX getting path of image store in Imageview with the help of filechooser need help D:
body: <p>my question is that I need help with getting the path from a image within a imageview in fxml file as I need to store the path of the image in an object. I am using a filechooser to input image into the imageView. I am planning to store that path into a object and claim it out at a later time like a profile page would keep the profile picture. I know it is abit brief but I hope if you guys got any way of helping me out it will be appreciated. </p>
  
  <p>So based on the comments I edited: 
  <strong>My problem is I cannot claim the URL of the image path although i using a filechooser.</strong> I have actually remove out all the relevant parts regarding the claiming of URL that i made as i cannot claim it out.</p>
  
  <pre><code>    package orgRegistrationtest;
  
  public class OrgRegistrationController {
  
  @FXML
  private JFXHamburger hamburger;
  
  @FXML
  private JFXTextField email;
  
  @FXML
  private JFXCheckBox health;
  
  @FXML
  private JFXCheckBox animal;
  
  @FXML
  private JFXCheckBox children;
  
  @FXML
  private JFXCheckBox elderly;
  
  @FXML
  private JFXCheckBox environment;
  
  @FXML
  private JFXCheckBox others;
  
  @FXML
  private JFXTextField name;
  
  @FXML
  private JFXTextField contact;
  
  @FXML
  private JFXTextField address;
  
  @FXML
  private JFXPasswordField password;
  
  @FXML
  private JFXPasswordField password2;
  
  @FXML
  private JFXTextArea desc;
  
  //pic not added 
  
  @FXML
  private ImageView pic;
  
  @FXML
  private JFXButton upload;
  
  @FXML
  private JFXButton clear;
  
  @FXML
  private JFXButton confirm;
  
  @FXML
  private JFXDrawer drawer;
  
  @FXML
  void handleClear(ActionEvent event) {
  
  }
  
  
  private String type=null;
  
  
  
  @FXML
  
       private void handleConfirmButtonAction(ActionEvent event) throws IOException {
  
          if(health.isSelected())
              type=health.getText();
          if(animal.isSelected()){
              type+=";"+animal.getText();
          }
          if(children.isSelected()){
              type+=";"+children.getText();
          }
          if(elderly.isSelected()){
              type+=";"+elderly.getText();
          }
          if(environment.isSelected()){
              type+=";"+environment.getText();
              }
          if(others.isSelected()){
              type+=";"+others.getText();
          }
  
          String Email=email.getText();
          String Password = password.getText();
          String Password2=password2.getText();
          String Name = name.getText();
          String Contact= contact.getText();
          String Address=address.getText();
          String Type = ""+type;
          String Desc = desc.getText();
          //String url = pic.getImage()._____
          //.getURL(); i know getURL is not inside same for getPath();
          // So how am i able to claim the Path of the Image and store it?
  
  
          OrgData table = new OrgData(Email,Password,Password2,Name, Contact,Address,Type,Desc,url);
  
          OrgDataDAO dao = new OrgDataDAO();
          dao.createFriend(table);
  
  
  
  
  }
  
  
  
  
  @FXML
  public void handleUpload(ActionEvent t) {
      FileChooser fileChooser = new FileChooser();
  
      //Set extension filter
  
  
      //Show open file dialog
      File file = fileChooser.showOpenDialog(null);
  
      try {
          BufferedImage bufferedImage = ImageIO.read(file);
          Image image = SwingFXUtils.toFXImage(bufferedImage, null);
          pic.setImage(image);
      } catch (IOException ex) {
          System.out.println(ex);
      }
  }
  
  
  private Main Main;
  
  public Main getMainApp() {
      return Main;
  }
  
  // setter for mainApp
  public void setMainApp(Main testmainApp) {
      this.Main = testmainApp;
  }
  </code></pre>
  
  <p>This is the model I have I never put in a String for the URL yet as i unable to sort of claim it out and there may be a better way to do instead of using the path although I did try out and it give me nothing.</p>
  
  <pre><code>  public class OrgData implements Serializable {
  private String email, pw, pw2, name, contact, address, type, desc,url;
  
  final static ObservableList&lt;OrgData&gt; data = FXCollections.observableArrayList();
  
  
  public OrgData(String email, String pw, String pw2, String name, String contact, String address, String type,
          String desc,String url) {
      super();
      this.email = email;
      this.pw = pw;
      this.pw2 = pw2;
      this.name = name;
      this.contact = contact;
      this.address = address;
      this.type = type;
      this.desc = desc;
      //this.url = url;
  }
  
  //public String getUrl() {
  //  return url;
  //}
  
  //public void setUrl(String url) {
  //    this.url= url;
  //}
  
  public String getEmail() {
      return email;
  }
  
  public void setEmail(String email) {
      this.email = email;
  }
  
  public String getPw() {
      return pw;
  }
  
  public void setPw(String pw) {
      this.pw = pw;
  }
  
  public String getPw2() {
      return pw2;
  }
  
  public void setPw2(String pw2) {
      this.pw2 = pw2;
  }
  
  public String getName() {
      return name;
  }
  
  public void setName(String name) {
      this.name = name;
  }
  
  public String getContact() {
      return contact;
  }
  
  public void setContact(String contact) {
      this.contact = contact;
  }
  
  public String getAddress() {
      return address;
  }
  
  public void setAddress(String address) {
      this.address = address;
  }
  
  public String getType() {
      return type;
  }
  
  
  
  public String getDesc() {
      return desc;
  }
  
  public void setDesc(String desc) {
      this.desc = desc;
  }
  
  
  
  public static ObservableList&lt;OrgData&gt; getData() {
      return data;
  }
  
  public String toString(){
      return "["+email+","+pw+","+name+","+contact+","+address+","+type+","+desc+","+url+"]";
  }
  </code></pre>
  
  <p>So this is the DAO where I save the file details at the end after users has click on the registered button and stored in the OrgRegData.dat file.
  So like I said, My problem is that I am unable to take the path from the imageView image that i pick from the filechooser and stored it in to my model even as a String as there is no getPath() or getURL(); sort of method after clicking on the registered. I am not using a database or anything just using files and text files to store the data and reading the data from the files, so I hope is more clearer now with my problem </p>
  
  <pre><code>    public class OrgDataDAO {
  private static final String Friend_File="OrgRegData.dat";
  private File dataFile;
  
  
  public OrgDataDAO() {
      Path dPath = FileSystems.getDefault().getPath("resources/data/",Friend_File);
      dataFile=new File(dPath.toString());     
  }
  
  public ObservableList&lt;OrgData&gt; getAllFriends() {
      Scanner in;
      String record=null;
      String[] fields;
      ImageView[] images;
  
      ObservableList&lt;OrgData&gt; friends=FXCollections.observableArrayList();;
      try {
          in=new Scanner(dataFile);
          while (in.hasNextLine()) {
              record=in.nextLine();
              fields=record.split(",");
              String email=fields[0];
              String password=fields[1];
              String password2=fields[2];
              String name=fields[3];
              String contact = fields[4];
              String address=fields[5];
              String type=fields[6];
              String desc=fields[7];
              //String url = fields[8];
  
              OrgData f=new OrgData(email,password,password2,name,contact,address,type,desc,url);
              friends.add(f);
          }
          in.close();
      } catch (FileNotFoundException e) { 
          System.out.println("No record found!");
          //e.printStackTrace();
      }
      return friends;
  }
  
  /* assuming friend has a unique name, otherwise may return a list */
  public OrgData getEvent(String email) {
      // TODO Auto-generated method stub
      ObservableList&lt;OrgData&gt; event=getAllFriends();
      OrgData Event=null;
      for (OrgData f:event) {
          if (f.getEmail().equals(email)){
              Event=f;
              break;
          }
      }
      return Event;
  }
  
  public void updateEvent(OrgData Event) {
      ObservableList&lt;OrgData&gt; Events=getAllFriends();
      for (int i=0; i&lt;Events.size(); i++) {
          OrgData f=Events.get(i);
          if (f.getEmail().equals(Event.getEmail())){
              Events.set(i, Event);
          }
      }
      synToFile(Events);
  }
  
  public void deleteEvent(OrgData Event) {
  
      ObservableList&lt;OrgData&gt; Events=getAllFriends();
  
      OrgData delEvent=null;
      for (OrgData f:Events) {
          if (Event.getEmail().equals(f.getEmail())){
              delEvent=f;         
              break;
          }
      }
      if (delEvent!=null){
          Events.remove(delEvent);
          synToFile(Events);      
      }       
  
  }
  
  public boolean createFriend(OrgData Event) {
      boolean existing=false;
      ObservableList&lt;OrgData&gt; Events=getAllFriends();
      for (OrgData f:Events) {
          if (f.getEmail().equals(Event.getEmail())){
              existing=true;
              break;
          }
      }
      if (!existing) {
          Events.add(Event);
          synToFile(Events);
      }
      return !existing;
  }
  
  private void synToFile(ObservableList&lt;OrgData&gt; EventList) {
      if (EventList==null)
          return;
  
      try {
          FileWriter out = new FileWriter(dataFile);
          for (OrgData f: EventList) {
              out.append(f.toString()+"\n");
          }
          out.close();
      } catch (IOException e) {
          // TODO Auto-generated catch block
          e.printStackTrace();
      }
  
  }
  </code></pre>