我正在研究Jasper报告。我需要向用户询问保存生成的报告的位置。为此,我需要打开一个“另存为”对话框。我使用JFileChooser
和FileDialog
进行了尝试。
但是,在执行我的代码时,当执行到达写入“另存为”对话框的代码时,代码仍然停留在那里。我注意到的一件事是,如果你在一个单独的java类中使用自己的PSVM打开一个打开的对话框的JFileChooser
和FileDialog
代码,它运行良好。
但是当它被其他一些函数调用时,执行仍然停留在那里。
我需要添加任何插件或jar来使用JFileChooser和FileDialog吗?或者其他我想念的东西?
我正在使用eclipse Java EE kepler和Spring MVC。
答案 0 :(得分:0)
FileDialog很容易像这样处理:
public String getFileFromDialog(){
FileDialog dialog=new FileDialog(yourFrame,"Save as",FileDialog.SAVE);
dialog.setVisible(true);
//When you call setVisible(true), the method blocks until the user
//chooses a file or cancels the dialog
return dialog.getDirectory()+dialog.getFile();
}
请注意,如果用户在没有选择任何文件的情况下关闭对话框,则该方法将返回相当奇怪的字符串“nullnull”,因为getDirectory()和getFile()都返回String“null”(不是null但是“null” )。您可能必须检查此项以确保用户实际选择了文件。
答案 1 :(得分:0)
JFrame frame= new JFrame();
frame.setAlwaysOnTop(true);
frame.setVisible(true);
FileDialog fd = new FileDialog(frame, "Save as", FileDialog.SAVE);
fd.setAlwaysOnTop(true);
fd.setVisible(true);
String path=fd.getDirectory().toString()+fd.getFile().toString();
input=cl.getResourceAsStream(total_employee_record);
report=JasperCompileManager.compileReport(input);
parameters.put("mypic",inputimage);
print=JasperFillManager.fillReport(report, parameters,new JRBeanCollectionDataSource(beanlist,false));
JasperExportManager.exportReportToPdfFile(印刷,路径); } .......... 这是我的服务方法。现在发生的事情是保存为对话框打开,但在后台。意味着每次我都要尽量减少eclipse来设置路径。 请给我解决方案。 对于糟糕的结构表示道歉。