如何java打开文件对话框,并把文件内容显示在一个文本区域中,我的代码如下,可是不知道错在那,希望大虾帮助解决,谢谢了
open.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e)
{
filename=fc.getSelectedFile().getName();
file1TextArea.setText(null);
try {
String str;
BufferedReader breader=new BufferedReader(new FileReader(filename));
while(true){
str=breader.readLine();
if(str==null){break;}
file1TextArea.setText(file1TextArea.getText()+str+"\n");
}
breader.close();
} catch (FileNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IOException e2) {
// TODO Auto-generated catch block
e2.printStackTrace();
}
}
});
open.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e)
{
filename=fc.getSelectedFile().getName();
file1TextArea.setText(null);
try {
String str;
BufferedReader breader=new BufferedReader(new FileReader(filename));
while(true){
str=breader.readLine();
if(str==null){break;}
file1TextArea.setText(file1TextArea.getText()+str+"\n");
}
breader.close();
} catch (FileNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IOException e2) {
// TODO Auto-generated catch block
e2.printStackTrace();
}
}
});
int result = fc.showOpenDialog(null);//这里本来应该是this,可是加上就有错误,帮我看看好吗,我是java方面的菜鸟
public class MainFrame { private JFrame frame = null;
private JPanel pane = null;
private JPanel panel1=null;
private JPanel panel2=null;
private JTextArea file1TextArea=new JTextArea();
private JFileChooser fc;
private OntModel owlModelA;
public static String filename=null;
public static String namespace=null;
private String projectpath=null;
private boolean hasfile=false;
private MenuBar mb=new MenuBar();
private Menu m1=new Menu("本体文件"),m2=new Menu("查询"),m3=new Menu("帮助");
private MenuItem open=new MenuItem("打开本体文件"),exit=new MenuItem("退出");
private MenuItem funOntology=new MenuItem("功能概念本体查询"),devOntology=new MenuItem("设备本体查询"),wayOfAch=new MenuItem("达成方式查询"), funTree=new MenuItem("功能分解树");
public MainFrame(){
super();
frame = new JFrame("功能分解树软件平台");
mb.add(m1);
m1.add(open);
m1.add(exit);
m2.add(funOntology);
m2.add(devOntology);
m2.add(wayOfAch);
m2.add(funTree);
mb.add(m2);
mb.add(m3);
frame.getContentPane().setLayout(new BorderLayout());
frame.setMenuBar(mb);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(1024, 700);
frame.setLocation(5, 5);
frame.setTitle("功能分解树平台——本体编辑");
frame.setResizable(false);
frame.setVisible(true);
open.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e)
{
filename=fc.getSelectedFile().getName();
file1TextArea.setText(null);
try {
int result = fc.showOpenDialog(this);
String str;
BufferedReader breader=new BufferedReader(new FileReader(filename));
while(true){
str=breader.readLine();
if(str==null){break;}
file1TextArea.setText(file1TextArea.getText()+str+"\n");
}
breader.close();
} catch (FileNotFoundException e1) {
e1.printStackTrace();
} catch (IOException e2) {
e2.printStackTrace();
}
}
});
exit.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e)
{
frame.dispose();
}
});
}
报错
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at test.fridge.MainFrame$1.actionPerformed(MainFrame.java:81)
at java.awt.MenuItem.processActionEvent(MenuItem.java:597)
at java.awt.MenuItem.processEvent(MenuItem.java:556)
at java.awt.MenuComponent.dispatchEventImpl(MenuComponent.java:298)
at java.awt.MenuComponent.dispatchEvent(MenuComponent.java:286)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:466)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)
这样改试试:
public class MainFrame extends JFrameint result = fc.showOpenDialog(getContentPane());
int result = fc.showOpenDialog(frame.getContentPane());没全看你代码,自己组织一下,但错的原因可以这样改
public FileChooser(){
//文件选择器默认为当前文件夹
super("./");
}
//提交选择
public void approveSelection(){
String filename=null;
filename=fileChooser.getSelectedFile().getName();
//System.out.println(filename);
fileTextArea.setText(null);
try {
String str;
BufferedReader br=new BufferedReader(new FileReader(/*directory[textArea_control]+"/"+*/filename));
while(true){
str=br.readLine();
if(str==null){
break;
}
//System.out.println(str);
fileTextArea.append(str+'\n');
//fileTextArea.setText(str+'\n');
System.out.println(fileTextArea);
}
} catch (Exception e) {
JOptionPane.showMessageDialog(dialogFrame.getContentPane(), "读取发生错误");
}
dialogFrame.dispose();//关闭对话框
//fileTabbedPane.setTitleAt(0, filename);
//}
}