java - 如何将选定的文件从 JFileChooser 传输到单击时应用代码的 JButton?
问题描述
我正在为一个应用程序开发一个 GUI,该应用程序允许根据一些转换规则将输入 XMI 代码转换为输出 XMI 代码。(我插入了 GUI 的屏幕截图。)
转换是在 GUI 类以外的类中实现的,它包括一个launch()
启动转换的方法。
所以在我的 GUI 类中,我实现了一个JButton
我命名的方法transform
,在addActionListener(new ActionListener())
方法中我调用了launch
启用转换的方法,并为它添加了所需的参数,它们是:(输入文件路径的元模型,输入 XMI文件路径、输出文件路径的元模型、输出 XMI 文件路径、转换目录路径、转换文件路径)
转换按钮代码如下:
transformer.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
try {
ATLLauncher atlLaunch = new ATLLauncher();
atlLaunch.registerInputMetamodel("./mm/input.ecore");
atlLaunch.registerOutputMetamodel("./mm/output.ecore");
atlLaunch.launch("./mm/input.ecore", "./mo/inputInst.xmi", "./mm/output.ecore", "./mo/resultXMI.xmi", "./transformation/","MyTrans");
System.out.println("done!!");
}
catch (Exception e1) {
e1.printStackTrace();
System.out.println("nope");
}
}
});
转换工作正常,生成的 XMI 输出文件被创建并存储在我在参数中指定的路径中。
我实现了一个文件选择器来加载输入文件(名为 的按钮Load file
),它还将输入文件的内容显示到JTextField
我创建的文件中(名为input
)。
文件选择器的代码如下:
loader.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
openMe om = new openMe();
JFileChooser chooser = new JFileChooser();
chooser.showOpenDialog(null);
File f=chooser.getSelectedFile();
filename=f.getAbsolutePath();
try {
//om.PickMe();
FileReader reader = new FileReader(filename);
BufferedReader br = new BufferedReader(reader);
textArea.read(br, null);
br.close();
textArea.requestFocus();
}
catch (Exception e) {
e.printStackTrace();
}
}
});
但是,我想要的是能够(自动)将我选择使用的文件传输Load file
到Transform
按钮中以对其应用转换。
一旦转换完成,我希望输出 XMI 文件内容显示在名为的文本字段中output
,除此之外,我希望输出文件是可下载的。这意味着当我按下Download
按钮时,我可以将其保存在 PC 上的任何位置。
按钮的代码Download
如下:
downloader.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
JFileChooser chooser1 = new JFileChooser();
chooser1.showSaveDialog(null);
File f1 =chooser1.getSelectedFile();
try {
FileWriter fw = new FileWriter(f1);
String txt =outputfile.getText();
fw.write(txt);
fw.close();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
});
}
如何在不同按钮之间实现这些传输?
解决方案
推荐阅读
- r - 创建一个函数来过滤 R 中的两列
- c# - 如何使用复选框事件?
- java - JsonobjectRequest 凌空库不工作
- java - Spring Data JPA 规范:过滤复杂数据
- matplotlib - 如何更改此混淆矩阵中的字体大小?
- xml - XPath 逻辑表达式
- javascript - Javascript 函数 .filter() 在 Iphone 上不起作用?
- python - 我想将 AUTH_USER_MODEL 定位到子目录中的自定义用户模型
- makefile - 我该如何解决这个问题“... .so: undefined reference to '...”
- android - 当第二个活动方向改变时 registerForActivityResult 不起作用