2015-11-20 41 views
0

我正在做一個簡單的程序,需要一個用戶名和密碼,並將其保存到一個文本文件。然而,程序工作正常,直到我檢查硬盤驅動器。文本文件在那裏沒有文本。緩衝作家不寫文本?

public class Main { 


public static void main(String args[]){ 
    events jack = new events(); 


    events gui = new events(); 
    gui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    gui.setTitle("WCPSS"); 
    gui.setSize(1100,400); 
    gui.setVisible(true); 
    gui.setLocationRelativeTo(null); 

    BufferedWriter bw = null; 
     try { 

     //Specify the file name and path here 
    File file = new File("E:/myfile.txt"); 

    /* This logic will make sure that the file 
     * gets created if it is not present at the 
     * specified location*/ 
     if (!file.exists()) { 
     file.createNewFile(); 
     } 

     FileWriter fw = new FileWriter(file); 
     bw = new BufferedWriter(fw); 
     bw.write(jack.username); 
      System.out.println("File written Successfully"); 

     } catch (IOException ioe) { 
     ioe.printStackTrace(); 
    } 
    finally 
    { 
     try{ 
      if(bw!=null) 
     bw.close(); 
     }catch(Exception ex){ 
      System.out.println("Error in closing the BufferedWriter"+ex); 
     } 
    } 
} 

}

public class events extends JFrame { 

public String username = (""); 
public String password = (""); 
private JLabel label; 
private JButton button; 
private JTextField userin = new JTextField(10); 
private JTextField userpass = new JTextField(10); 


public events() { 
    setLayout(new FlowLayout()); 

    button = new JButton("Submit"); 
    button.setBounds(5, 435, 50, 123); 
    add(button); 
    label = new JLabel(
      "Please enter your username and password : "); 
    add(label); 
    add(userin); 
    add(userpass); 

    button.addActionListener((e) -> { 
     sumbitAction(); 
    }); 

} 

private void sumbitAction() { 
    username = userin.getText(); 
    password = userpass.getText(); 
    System.out.println(username); 
    System.out.println(password); 
} 

}

我知道這可能是writen很差,但我是一個初學者,並會apperticate一些幫助。謝謝

+3

那麼,你寫'jack.username','jack.username'是一個空字符串,所以這是預期的,不是嗎?只有當用戶決定按下按鈕時,用戶名纔會變得很長。 –

回答

2

寫入文件的部分應該工作。問題是它運行之後加載了JFrame

當你按下JButton你應該將代碼到ActionListener處理程序執行:

private void sumbitAction() { 
    username = userin.getText(); 
    password = userpass.getText(); 
    System.out.println(username); 
    System.out.println(password); 

    // do the writing here 
} 

你還在內存和裝載只有一個創建JFrame的兩個實例。爲什麼?只創建一個。