Java 从事件获取文本字段中的路径

Java 从事件获取文本字段中的路径,java,javafx,fxml,scenebuilder,Java,Javafx,Fxml,Scenebuilder,我想在我的应用程序中选择一个文件,然后将其路径写入文本字段,并将其用作我的主应用程序的变量。 我做了我的界面并添加了一些东西,比如当我按下按钮时,我选择了一个文件,但我不知道如何获得该路径。 以下是我的主要应用程序代码: package ch.makery.adress; import java.io.IOException; import javafx.application.Application; import javafx.fxml.FXMLLoader; import javafx

我想在我的应用程序中选择一个文件,然后将其路径写入文本字段,并将其用作我的主应用程序的变量。 我做了我的界面并添加了一些东西,比如当我按下按钮时,我选择了一个文件,但我不知道如何获得该路径。 以下是我的主要应用程序代码:

package ch.makery.adress;

import java.io.IOException;

import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Scene;
import javafx.stage.Stage;
import javafx.scene.Parent;


public class MainApp extends Application {



    @Override
    public void start(Stage stage) throws Exception {
        Parent parent = FXMLLoader.load(getClass().getResource("PersonOverview.fxml"));
        Scene scene = new Scene(parent);
        stage.setTitle("Appication Extraction et remplissage Excel");
        stage.setScene(scene);
        stage.show();    
}
}
这里是我的控制器类:

package ch.makery.adress;

import java.awt.FileDialog;
import javafx.fxml.Initializable;
import java.net.URL;
import java.util.ResourceBundle;
import javax.swing.JFrame;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.scene.control.ComboBox;
import javafx.scene.control.TextField;

public class HexaController implements Initializable {
       static JFrame fileDialog;
        @FXML
        private ComboBox<String> hexa;
        ObservableList<String> list = FXCollections.observableArrayList();


        @FXML
        private void dar(ActionEvent event){
            FileDialog fd1=new FileDialog(fileDialog,"Choisissez un fichier d'entree",FileDialog.LOAD);
            fd1.setDirectory("C:\\");
            fd1.setVisible(true);
            String filename1=fd1.getFile();
            String Directory1=fd1.getDirectory();
            String path1=Directory1 + filename1;
        }

        @FXML
        private void modele(ActionEvent event){
            JFrame parentFrame=new JFrame();
             FileDialog filechooser = new FileDialog (parentFrame, "Choisir un modèle Excel à copier",FileDialog.LOAD);
             filechooser.setDirectory("C:\\");
             filechooser.setVisible(true);
             String directory_copy = filechooser.getDirectory();
             String name_copy= filechooser.getFile();
             String path_copy = (directory_copy+name_copy);
        }

        @FXML
        private void sortie (ActionEvent event){
            JFrame parentFrame2=new JFrame();
             FileDialog filechooser2 = new FileDialog (parentFrame2, "Choisir une destination d'enregistrement",FileDialog.SAVE);
             filechooser2.setDirectory("C:\\");
             filechooser2.setVisible(true);
             String directory_save = filechooser2.getDirectory();
             String name_save= filechooser2.getFile();
             String path_save = (directory_save+name_save+".xls");
        }
        @FXML
        private void annuler (ActionEvent event){
            System.exit(0);
        }


        @FXML
        private ComboBox<Integer>methode;
        ObservableList<Integer>nombre = FXCollections.observableArrayList();

        @FXML
        private TextField entree;

        @FXML
        private TextField excel;

        @FXML
        private TextField sortie;


public HexaController(){

}

public void initialize(URL url,ResourceBundle rb){

    list.add(new String("OUI"));
    list.add(new String("NON"));
    hexa.setItems(list);
    nombre.add(new Integer(1));
    nombre.add(new Integer(2));
    nombre.add(new Integer(3));
    nombre.add(new Integer(4));
    nombre.add(new Integer(5));
    methode.setItems(nombre);
}
}
下一步我该怎么做才能让它工作?不知道从哪里开始。
谢谢

因为它是一个JavaFX应用程序,我想您将为每个用户启动一个应用程序,这样您就不会在内存中共享全局信息

第一种方法是在HexaController中使用私有字符串latestFilePath,例如,当用户打开文件时,您可以获取文件路径并将其传递到字符串字段

String directory_save = filechooser2.getDirectory(); 
String name_save= filechooser2.getFile();
this.latestFilePath = directory_save+name_save;
因此,以后您可以在任何地方使用它,使用一个简单的if语句来检查它是否为null

ii作为第二种方法(可以是上述方法的扩展),您只需获取文件路径并将其设置在文本字段中即可

 String filename1=fd1.getFile();
 String Directory1=fd1.getDirectory();
 String path1=Directory1 + filename1;
 entree.setText(path1);

行中:String directory\u save=filechooser2.getDirectory;字符串名称\u save=filechooser2.getFile,你没有得到完整的文件路径吗?您可以将其更新为所需的相应文本字段,或者将其传递为全局变量。在该字段上,它是一个需要保存的文件。所以我只需要输入文件的路径和名称。如何将其更新到textfield或golbal变量中?这实际上是我不知道的。好吧,把它作为答案贴出来,效果很好!谢谢,我认为不可能做到这么简单。