合作伙伴和我正在研究一個由三個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();
}
}
}
});
}
}
檢查是100%確定文件正在創建。 –
[使用多個JFrames,好/壞實踐?](http://stackoverflow.com/a/9554657/300257) –