在此链接中我之前的帖子之后,我遇到了另一个问题。
给定以下代码:
public class GuiHandler extends javax.swing.JFrame {
// GuiHandler is the class that runs the entire project
// here are two private fields that I use in the code , I have more but they
// irrelevant for the moment
final JFileChooser openFiles = new JFileChooser();
private DataParser xmlParser = new DataParser();
// later on I have this method - XMLfilesBrowserActionPerformed
private void XMLfilesBrowserActionPerformed(java.awt.event.ActionEvent evt) {
//setting the file chooser
openFiles.setFileSelectionMode(JFileChooser.FILES_ONLY);
openFiles.setAcceptAllFileFilterUsed(false);
if (openFiles.showOpenDialog(this) == JFileChooser.APPROVE_OPTION) {
//getting the selected file
File selected = openFiles.getSelectedFile();
// from here I parse the XML file that I opened with JFileChooser
// with the help of one of my methods getNodeListFromFile
xmlParser.getNodeListFromFile(selected);
问题是我不能使用main
之前在上面的链接中建议的声明(我必须补充一下这是一个非常好的:)),发布的代码是:
public class NativeFileChooser {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
try {
UIManager.setLookAndFeel(
UIManager.getSystemLookAndFeelClassName());
} catch(Exception e) {
e.printStackTrace();
}
JFileChooser jfc = new JFileChooser();
jfc.showOpenDialog(null);
}
});
}
}
并且使用我的方法使以后操作文件main
变得非常困难。XML
getNodeListFromFile
我需要的是使用“简单”的浏览器JFileChooser
,然后使用选择的文件,而不涉及main
到 .
如果有人能解释我如何将上述代码(或其他任何内容)与我的代码一起使用,我将不胜感激。
最好的祝福
编辑:
如果我使用这样的代码;
public void launchFileChooser() {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
try {
UIManager.setLookAndFeel(
UIManager.getSystemLookAndFeelClassName());
} catch(Exception e) {
e.printStackTrace();
}
JFileChooser jfc = new JFileChooser();
jfc.setFileSelectionMode(JFileChooser.FILES_ONLY);
jfc.setAcceptAllFileFilterUsed(false);
if (jfc.showOpenDialog(null) == JFileChooser.APPROVE_OPTION)
newFile = jfc.getSelectedFile();
}
});
}
这newFile
是一个数据成员。
然后打开文件后,代码崩溃。
如果我创建jfc
一个数据成员,代码将打开常规浏览器。知道如何解决吗?
谢谢