使用JFileChooser打开文件并将其显示在JFrame / JPanel中

时间:2017-10-30 10:01:58

标签: java swing jfilechooser

所以我试图在NetBeans IDE中创建swing gui。我是java的新手,也是建立gui的,所以它是一个学习曲线。

我创建了一个名为“Open”的JMenuItem,并使用JFileChooser打开文件并显示它。限制自己的文件扩展名是“* .map”。

所以我的代码工作正常,它会在我桌面上的新窗口中打开所选文件。但我想弄清楚如何打开我的JFrame内的文件,而不是一个新的窗口。 它不是.txt文件所以我假设我不能使用JTextArea或JTextField。我在JFrame中创建了一个JPanel吗?

这是我的ActionPerformed事件代码:

private void OpenActionPerformed(java.awt.event.ActionEvent evt) {
    try{
        JFileChooser chooser= new JFileChooser();
        chooser.setCurrentDirectory(new File("c:\\temp"));
        chooser.setFileFilter(new FileNameExtensionFilter("map","MAP"));
        int value = chooser.showOpenDialog(null);
        if(value == JFileChooser.APPROVE_OPTION){
            File selectedFile = chooser.getSelectedFile();
            String path = selectedFile.getAbsolutePath();

            File myFile = new File(path);
            Desktop.getDesktop().open(myFile);
            messageLabel.setText("Map successfully Loaded!");
        }
    }catch(Exception e){
        JOptionPane.showMessageDialog(null,e);
    }

1 个答案:

答案 0 :(得分:0)

了解如何在JTextArea中显示文件。谢谢你们的回应。这是我更新的代码,它正如我想要的那样工作。

    private void OpenActionPerformed(java.awt.event.ActionEvent evt) {                                 
                JFileChooser chooser= new JFileChooser();
                chooser.setCurrentDirectory(new File("c:\\temp"));
                chooser.setFileFilter(new FileNameExtensionFilter("map","MAP"));
                int value = chooser.showOpenDialog(null);
                File f= chooser.getSelectedFile();
                String filename= f.getAbsolutePath();
                
                try{
                    FileReader reader = new FileReader(filename);
                    BufferedReader br = new BufferedReader(reader);
                    jTextArea1.read(br,null);
                    br.close();
                    jTextArea1.requestFocus();
                }catch(Exception e){
                    JOptionPane.showMessageDialog(null,e);
                }
        
        
    }