首页 > 解决方案 > 如何将选定的文件从 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 fileTransform按钮中以对其应用转换。

一旦转换完成,我希望输出 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();
            }
            
        }
    });
}

如何在不同按钮之间实现这些传输?

截图: 在此处输入图像描述

标签: javaswingjbuttonactionlistenerjfilechooser

解决方案


推荐阅读