如何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();
}
}
     });

解决方案 »

  1.   

    点击open选项,没反应,我有个菜单file-->open,本应该点击open出来一个对话框,然后选择文件,把文件显示在textarea中
      

  2.   

    你的actionPerformed根本就没有弹对话框动作,加上去吧
      

  3.   

    楼上,你好,可是我加了
    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)
      

  4.   

    你的MainFrame 又不是容器
    这样改试试:
    public class MainFrame extends JFrameint result = fc.showOpenDialog(getContentPane());
      

  5.   

    哦,这样就可以啦
    int result = fc.showOpenDialog(frame.getContentPane());没全看你代码,自己组织一下,但错的原因可以这样改
      

  6.   

    对话框显示出来了,也能打开文件了,可是读取文件错误,如何解决,意思就是如何将文件内容显示在textarea中
      

  7.   

    file1TextArea.appendt(str+"\n");
      

  8.   

    还是不行啊,晕了,一天了,还没解决,我又改了下,楼上帮忙看看,好吗?谢谢了class FileChooser extends JFileChooser{
         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);
         //}
         }