从事件中获取 TextField 中的路径
Get a path in a TextField from an event
我想在我的应用程序中选择一个文件,然后将其路径写入文本字段并将其用作我的主应用程序的变量。
我做了我的界面并添加了一些东西,比如当我按下按钮时我选择了一个文件但我不知道如何获得该路径。
这是我的主要应用程序代码:
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();
}
}
这是我的控制器 class :
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 应用程序,我想您将为每个用户启动一个应用程序,这样您就不会遇到内存中共享的全局信息的问题。
i) 第一种方法是在你的 HexaController 中有一个私有的 String latestFilePath ,当用户打开文件时,你可以获取 filePath 并将其传递给 String 字段
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);
我想在我的应用程序中选择一个文件,然后将其路径写入文本字段并将其用作我的主应用程序的变量。 我做了我的界面并添加了一些东西,比如当我按下按钮时我选择了一个文件但我不知道如何获得该路径。 这是我的主要应用程序代码:
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();
}
}
这是我的控制器 class :
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 应用程序,我想您将为每个用户启动一个应用程序,这样您就不会遇到内存中共享的全局信息的问题。
i) 第一种方法是在你的 HexaController 中有一个私有的 String latestFilePath ,当用户打开文件时,你可以获取 filePath 并将其传递给 String 字段
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);