私の質問は、イメージのパスを保存する必要があるので、fxmlファイルのイメージビュー内のイメージからパスを取得するのに助けが必要ですオブジェクト内に私はfilechooserを使用してimageViewに画像を入力しています。私はオブジェクトにそのパスを保存し、後でプロファイルページがプロファイル画像を保持するようにそれを主張する予定です。私はそれがabit簡潔であることを知っているが、もし皆さんが私を助けてくれる方法があれば、それは感謝します。JavaFXイメージビューアのイメージストアのパスをfilechooserの助けを借りて助けが必要ですD:
私が編集したコメントに基づいて: 私の問題は、私がファイルチョイスを使用しているにもかかわらずイメージパスのURLを要求できないことです。私は実際に私がそれを主張することはできません私が作ったURLの主張に関するすべての関連部分を削除しました。
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;
}
これは、請求のそれを整理して、私ができないように私は、私はまだURLの文字列に入れたことがないモデルであり、私がしようとしなかったが、パスを使用しての代わりを行うには良い方法があるかもしれませんそれは私に何も与えません。
public class OrgData implements Serializable {
private String email, pw, pw2, name, contact, address, type, desc,url;
final static ObservableList<OrgData> 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<OrgData> getData() {
return data;
}
public String toString(){
return "["+email+","+pw+","+name+","+contact+","+address+","+type+","+desc+","+url+"]";
}
だからこれは私が登録ボタンをクリックしてOrgRegData.datファイルに保存されたユーザーの後に最後にファイルの詳細情報を保存DAOです。 私の問題は、filechooserから取り出した画像ビューのパスを取得できず、getPath()またはgetURL()が存在しないためStringとしてもモデルに格納されていることです。登録されたメソッドをクリックしてソートします。私は、あなたは画像を保存再考する必要が私の問題で今
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<OrgData> getAllFriends() {
Scanner in;
String record=null;
String[] fields;
ImageView[] images;
ObservableList<OrgData> 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<OrgData> 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<OrgData> Events=getAllFriends();
for (int i=0; i<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<OrgData> 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<OrgData> 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<OrgData> 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();
}
}
あなたはどのような問題を抱えていますか?質問を編集し、関連するコードを追加してください。 –
'FileChooser'からファイルを取得すると、パスが分かります。問題はどこにありますか? – fabian
質問を編集しました。fxmlの外観を後で出すように見せる必要がある場合 – Devilsbats