【问题标题】:Can't get example JAVA code for JFileChooser to work in NetBeans IDE 8.2无法获取 JFileChooser 的示例 JAVA 代码以在 NetBeans IDE 8.2 中工作
【发布时间】:2018-06-23 03:46:21
【问题描述】:

我正在尝试编写一个程序,它会提示用户选择一个文件夹,然后允许用户显示该文件夹中的所有内容。我一直在网上搜索,发现了几个使用 JFileChooser 的例子,包括这个here。当我尝试使用 JGrasp 中上一个链接中的示例时,它运行没有问题。但是,当我尝试在 NetBeans 中运行它时,出现错误(DemoJFileChooser 类无法编译,因为需要返回类型,并且 Main 中的行说找不到符号 DemoJFileChooser)。我不确定它有什么问题,但我已经尽我所能地对其进行了调整

下面的程序编译并运行良好,但是当我选择选项 1 时,程序只是冻结一秒钟,然后重新显示菜单。我无法让它显示文件选择对话框。我做错了什么?

import java.util.Scanner;
import javax.swing.JFileChooser;

public class FileDirectoryProcessing {

JFileChooser chooser;
String choosertitle;

public static void main(String[] args) {

    SelectionMenu:
    while (true) {
        Scanner scannerIn = new Scanner(System.in);
        System.out.println("0 - Exit");
        System.out.println("1 - Select Directory");
        System.out.println("2 – List directory contents");
        System.out.println("Select Option");
        try{
        int userInput = Integer.parseInt(scannerIn.nextLine());
        switch (userInput) {
            case 0:
                System.out.println("Thank you");
                break SelectionMenu;
            case 1:
                System.out.println("Select a directory");

                new FileDirectoryProcessing().ChooseDirectory();
                break;
            case 2:
                System.out.println("Directory Contents");
                break;
            default:
                System.out.println("Please make a valid selection");
                break;
        }

        } catch (NumberFormatException e){
            System.out.println("Please make a valid selection");
        }           
    }      
}

private void ChooseDirectory(){
    chooser = new JFileChooser(); 
    chooser.setCurrentDirectory(new java.io.File("."));
    chooser.setDialogTitle(choosertitle);
    chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);

    chooser.setAcceptAllFileFilterUsed(false);

    if (chooser.showOpenDialog(this) == JFileChooser.APPROVE_OPTION) { 
      System.out.println(chooser.getCurrentDirectory() 
         +  "getCurrentDirectory(): ");
      System.out.println("getSelectedFile() : " 
        +  chooser.getSelectedFile());
      }
    else {
      System.out.println("No Selection ");
    }
  }
}

【问题讨论】:

  • 你可以试试chooser.showOpenDialog(new javax.swing.JFrame());

标签: java swing jfilechooser


【解决方案1】:

showOpenDialog 方法接受组件,而 thisFileDirectoryProcessing 的实例)不是组件,因此存在问题。

在方法中提供父 component 实例。或者现在你也可以传递chooserJFileChooser 的实例)或null

因此,以下两个选项都可以正常工作:

chooser.showOpenDialog(chooser)

chooser.showOpenDialog(null)

【讨论】:

  • 嗨,阿曼,这很好用。我的程序现在至少正在编译,但文件选择器窗格没有出现。我玩了一会儿,当我最小化所有其他窗口时发现它。它在后面弹出。我翻遍了方法,看看是否可以将其设置在前面,但我没有找到任何东西。有什么建议吗?
  • @skidwiz 这里已经有答案了:stackoverflow.com/questions/5129294/…
猜你喜欢
  • 2020-08-10
  • 2019-04-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-24
  • 2018-12-08
  • 2020-09-26
  • 2022-12-01
相关资源
最近更新 更多