2011-04-17 98 views
1

这是我的原始代码,提示用户输入文件名。但是,用户必须在控制台内写入才能工作。使用JOptionPane接收用户的输入

BufferedReader bf = new BufferedReader(new InputStreamReader(System.in)); 
     System.out.print("Enter file name: "); 
     String filename = bf.readLine(); 
     File file = new File(filename); 
     if (!filename.endsWith(".txt")) { 
      System.out.println("Usage: This is not a text file!"); 
      System.exit(0); 
     } else if (!file.exists()) { 
      System.out.println("File not found!"); 
      System.exit(0); 
     } 

现在我想创建一个JOptionPane来提示用户在窗格内输入。 这是我的代码。

BufferedReader bf = new BufferedReader(new InputStreamReader(System.in)); 
     JFrame frame = new JFrame(); 
     Object result = JOptionPane.showInputDialog(frame, "Enter a blog website"); 
     String word2 = (String) result; 
     word2 = bf.readLine(); 
     File file = new File(word2); 
     if (!word2.endsWith(".txt")) { 
      System.out.println("Usage: This is not a text file!"); 
      System.exit(0); 
     } else if (!file.exists()) { 
      System.out.println("File not found!"); 
      System.exit(0); 
     } 

还有一些接收用户输入并处理它们的进一步编码。但是,创建joptionpane后,没有任何反应。 joptionpane出来了,但是在输入之后,没有任何反应。介意我的错误在哪里?

回答

2

您在读取它后覆盖该值。

Object result = JOptionPane.showInputDialog(null, "Enter a blog website"); 
    String word2 = (String) result; 

    File file = new File(word2); 
    if (!word2.endsWith(".txt")) { 
     System.out.println("Usage: This is not a text file!"); 
     System.exit(0); 
    } else if (!file.exists()) { 
     System.out.println("File not found!"); 
     System.exit(0); 
    } 

如果您使用的是JOptionPane,那么您不需要BufferedReader。