2014-03-29 73 views
0

合作伙伴和我正在研究一個由三個GUI框架組成的程序(是的,用於作業);第一個是帶有JButtons的簡單菜單,第二個是註冊屏幕,爲用戶提供選項(例如護照類型,護照號碼等),用Jbutton將信息「保存」爲.txt文件,第三種是通過在GUI框架的文本區域內打印其內容來「加載」所述.txt文件。JAVA - 在GUI框架中寫入和打印文本文件?

我們的問題是,我們似乎無法獲取從.txt文件保存和加載的信息。

我們很確定該文件沒有被創建,因此沒有任何內容正在寫入它。但是,我們在運行時沒有發現任何錯誤,所以我們對錯誤的地方感到困惑。如果有人可以看看它並給我們一些指示,那將非常有幫助。

代碼如下:

public class test 
{ 

public static void main(String[] args) throws IOException 
{ 
     // File file = new File("enroll.txt"); used to create the file 
     final JFrame mainMenu = new JFrame("Error"); 
      final int WINDOW_WIDTH = 600; 
      final int WINDOW_HEIGHT = 400; 
      FlowLayout layout = new FlowLayout(); 
      mainMenu.setSize(WINDOW_WIDTH, WINDOW_HEIGHT); 
      mainMenu.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
      mainMenu.setLocationRelativeTo(null); 
      mainMenu.setLayout(layout); 
      Button load = new Button("Load Enrollment"); 
      Button enroll = new Button ("New Enrollment"); 
      mainMenu.add(load); 
      mainMenu.add(enroll); 
      mainMenu.setVisible(true); 

     final JFrame loadEn = new JFrame("Load"); 
      loadEn.setVisible(false); 
      loadEn.setSize(WINDOW_WIDTH, WINDOW_HEIGHT); 
      loadEn.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
      loadEn.setLocationRelativeTo(null); 
      loadEn.setLayout(layout); 
      JLabel file = new JLabel("File:"); 
      file.setVisible(true); 
      final JTextField fileEnter = new JTextField(10); 
      fileEnter.setEditable(true); 
      fileEnter.setVisible(true); 
      Button run = new Button("Run"); 
      Button menu = new Button("Main Menu"); 
      final JTextArea print = new JTextArea(500, 300); 
      loadEn.add(file); 
      loadEn.add(fileEnter); 
      loadEn.add(run); 
      loadEn.add(menu); 
      loadEn.add(print); 

     final JFrame newEnroll = new JFrame("New Enrollment"); 
      newEnroll.setVisible(false); 
      newEnroll.setSize(WINDOW_WIDTH, WINDOW_HEIGHT); 
      newEnroll.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
      newEnroll.setLocationRelativeTo(null); 
      newEnroll.setLayout(layout); 
      JLabel passType = new JLabel("Passport Type"); 
      JLabel passNo = new JLabel("Passport Number"); 
      JLabel firstName = new JLabel("First Name"); 
      JLabel lastName = new JLabel("Last Name"); 
      JLabel country = new JLabel("Country"); 
      JLabel placeOB = new JLabel("Place of Birth"); 
      JLabel visaType = new JLabel("Visa Type"); 
      JLabel visaNo = new JLabel("Visa Number"); 
      JLabel remarks = new JLabel("Remarks"); 
      Button save = new Button("Save"); 
      final JTextField _passNo = new JTextField(10); 
      final JTextField _firstName = new JTextField(10); 
      final JTextField _lastName = new JTextField(10); 
      final JTextField _placeOB = new JTextField(10); 
      final JTextField _visaNo = new JTextField(10); 
      final JTextField _remarks = new JTextField(10); 
      final JTextField _passType = new JTextField(10); 
      final JTextField _country = new JTextField(10); 
      final JTextField _visaType = new JTextField(10); 
      newEnroll.add(passType); 
      newEnroll.add(_passType); 
      newEnroll.add(visaType); 
      newEnroll.add(_visaType); 
      newEnroll.add(passNo); 
      newEnroll.add(_passNo); 
      newEnroll.add(visaNo); 
      newEnroll.add(_visaNo); 
      newEnroll.add(firstName); 
      newEnroll.add(_firstName); 
      newEnroll.add(remarks); 
      newEnroll.add(_remarks); 
      newEnroll.add(lastName); 
      newEnroll.add(_lastName); 
      newEnroll.add(country); 
      newEnroll.add(_country); 
      newEnroll.add(placeOB); 
      newEnroll.add(_placeOB); 
      newEnroll.add(menu); 
      newEnroll.add(save); 

     load.addActionListener(new ActionListener() 
     { 
      @Override 
      public void actionPerformed(ActionEvent e) 
      { 
       loadEn.setVisible(true); 
       mainMenu.setVisible(false); 
       newEnroll.setVisible(false); 
      } }); 

     menu.addActionListener(new ActionListener() 
     { 
      @Override 
      public void actionPerformed(ActionEvent e1) 
      { 
       loadEn.setVisible(false); 
       mainMenu.setVisible(true); 
       newEnroll.setVisible(false); 
      } }); 

     enroll.addActionListener(new ActionListener() 
     { 
      @Override 
      public void actionPerformed(ActionEvent e2) 
      { 
       loadEn.setVisible(false); 
       mainMenu.setVisible(false); 
       newEnroll.setVisible(true); 
      } }); 

     save.addActionListener(new ActionListener() 
     { 
      @Override 
      public void actionPerformed(ActionEvent e4) 
      { 
       PrintWriter fw = null ; 
       try 
       { 
        fw = new PrintWriter("enroll.txt", "UTF-8"); 
        BufferedWriter bw = new BufferedWriter(fw); 
        bw.write(_passNo.getText()); 
        bw.newLine(); 
        bw.write(_firstName.getText()); 
        bw.newLine(); 
        bw.write(_lastName.getText()); 
        bw.newLine(); 
        bw.write(_placeOB.getText()); 
        bw.newLine(); 
        bw.write(_visaNo.getText()); 
        bw.newLine(); 
        bw.write(_remarks.getText()); 
        bw.newLine(); 
        bw.write(_passType.getText()); 
        bw.newLine(); 
        bw.write(_country.getText()); 
        bw.newLine(); 
        bw.write(_visaType.getText()); 
       } catch (IOException e1) 
        { 
         e1.printStackTrace(); 
        } 
        finally 
        { 
         fw.close(); 
        } 
      } 
     }); 

     run.addActionListener(new ActionListener() 
     { 
      public void actionPerformed(ActionEvent e3) 
      { 
       FileReader fr = null; 
       try 
       { 
        fr = new FileReader("enroll.txt"); 
       } catch (FileNotFoundException e2) 
        { 
        e2.printStackTrace(); 
        } 
       try 
       { 
        fr = new FileReader("enroll.txt"); 
       } catch (FileNotFoundException e1) 
        { 
        e1.printStackTrace(); 
        } 

       BufferedReader br = new BufferedReader(fr); 
       try 
       { 
        print.read(br, null); 
       } catch (IOException e1) 
        { 
        e1.printStackTrace(); 
        } 
        catch(Exception e) 
        { 
         System.out.println(e); 
        } finally 
        { 
         try 
         { 
          br.close(); 
         } catch (IOException e) 
         { 
          e.printStackTrace(); 
         } 
         try 
         { 
          fr.close(); 
         } catch (IOException e) 
         { 
          e.printStackTrace(); 
         } 
        } 

      } 
     }); 
} 
    } 
+0

檢查是100%確定文件正在創建。 –

+0

[使用多個JFrames,好/壞實踐?](http://stackoverflow.com/a/9554657/300257) –

回答

0

兩個更改

首先 - 寫

save.addActionListener你閉上你的PrintWriter與fw.close();。打印作者被你的BufferedWriter bw = new BufferedWriter(fw);使用。 你必須調用bw.close()代替fw.close()

二 - 讀

佈局的選擇是不是最好的。你的JTextArea非常大。您的文件已加載,但無法看到它。如果您使用final JTextArea print = new JTextArea(30, 30);而不是final JTextArea print = new JTextArea(500, 500);各種工作正常。請記住:JTextArea中的參數是行和列 - 而不是像素。

希望幫助