【问题标题】:Open file with JFileChooser and display it in JFrame/JPanel使用 JFileChooser 打开文件并在 JFrame/JPanel 中显示
【发布时间】:2017-10-30 10:01:57
【问题描述】:

所以我尝试在 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);
    }

【问题讨论】:

  • .map 文件是什么样的文件?
  • Desktop.getDesktop().open(myFile); 将导致操作系统使用与其关联的应用程序打开指定文件。在当前应用中处理,只需要调用逻辑即可,无需提交给操作系统处理。
  • 因此 .map 文件包含文本,其中包含有关“place placeName xpos ypos”形式的地点信息,因此它是一个描述地图的文件,每个文件上都有一系列记录,例如“place London 200 250”换行

标签: java swing jfilechooser


【解决方案1】:

最终弄清楚如何在 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);
                }
        
        
    }                                    

【讨论】:

    猜你喜欢
    • 2016-10-09
    • 2013-01-01
    • 2020-03-31
    • 2013-06-17
    • 1970-01-01
    • 2011-07-18
    • 2014-03-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多