2013-05-28 5 views
0

Привет, У меня возникли проблемы с вводом пользователя и получением его ввода пользователем. Затем вводя пользовательский ввод и используя его для создания нового текстового текстового файла. Я могу заставить его работать, но когда я использую JTextField, он не создаст файл.Создание нового файла с использованием JTextField

Любая помощь была бы принята с благодарностью.

Это мой код:

import java.awt.*; 
import java.awt.event.ActionListener; 
import java.awt.event.ActionEvent; 
import javax.swing.JOptionPane; 
import javax.swing.*; 
import java.io.*; 
import javax.swing.JFrame; 
import javax.swing.JTextField; 
import javax.swing.JTextArea; 
import java.util.Scanner; 

public class newGame extends JFrame { 
    private JButton reg; 
    private JTextField userName; 
    private JTextField info; 
    Scanner input = new Scanner(System.in); 

    public newGame() { 

     super ("Rock Paper Scissors"); 

     //creates the text fields 
     info = new JTextField ("Welcome to the rock, Please enter your username below"); 
     info.setEditable(false); 
     JTextField userName = new JTextField ("name"); 

     //impliments actionlistner 
     newClass saver = new newClass(); 
     userName.addActionListener(saver); 


     //adds the fields to the Content Layout 
     JPanel content = new JPanel(); 
     content.setLayout(new BorderLayout()); 
     content.add(info, BorderLayout.NORTH); 
     content.add(userName, BorderLayout.SOUTH); 
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     setContentPane(content); 
     setTitle("Rock Paper Scissors The Game"); 
     pack(); 


    } 


    private class newClass implements ActionListener { 
     public void actionPerformed (ActionEvent event) { 

      String newUserName = userName.getText(); 
      File file = new File(newUserName + ".txt"); 
      boolean blnCreated = false; 
      try { 
       blnCreated = file.createNewFile(); 
      } catch(IOException ioe) { 
      } 
      JOptionPane.showMessageDialog 
       (null,String.format("%s",event.getActionCommand())); 
     } 
    } 
} 

ответ

2

Вы shadowing переменная userName поэтому переменная-член класса с тем же именем никогда не устанавливается в результате чего NPE в ActionListener до того, как файл может быть создан. Заменить

JTextField userName = new JTextField("name"); 

с

userName = new JTextField("name"); 
+0

Большое спасибо, что помогли! Это местное затенение. –

Смежные вопросы