[英]Button not creating new file when pressed in Java Swing application
因此,這只是一個帶有按鈕的窗口,當按下該按鈕時,會打開一個新的內部窗口,其中包含三個文本框和一個確定按鈕。 當按下內部窗口中的“確定”按鈕時,它應該創建一個新文件,但事實並非如此,有人知道為什么嗎?
import javax.swing.*;
import java.io.*;
import java.util.*;
import java.awt.BorderLayout;
import java.awt.event.*;
public class tuna extends JFrame {
private JButton button1, ok;
private JTextField nameOfSong, artist;
private JTextArea lyrics;
JDesktopPane desktop;
JInternalFrame internalFrame;
Formatter x;
public tuna() {
super("iLyrics");
desktop = new JDesktopPane();
getContentPane().add(desktop, BorderLayout.CENTER);
button1 = new JButton("Add a Song");
getContentPane().add(button1, BorderLayout.NORTH);
thehandler handler = new thehandler();
button1.addActionListener(handler);
}
private class thehandler implements ActionListener{
public void actionPerformed(ActionEvent event){
if(event.getSource()==button1)
internalGui();
}
}
public void internalGui(){
// Add a Song
JInternalFrame internalFrame = new JInternalFrame(
"Internal Frame", true, true, true, true);
internalFrame.setBounds(200, 200, 200, 200);
desktop.add(internalFrame, JLayeredPane.DEFAULT_LAYER);
// desktop.add(internalFrame);
final JTextField nameOfSong = new JTextField("song");
final JTextField artist = new JTextField("artist");
final JTextArea lyrics = new JTextArea("lyrics");
JButton ok = new JButton("Ok");
internalFrame.add(nameOfSong, BorderLayout.BEFORE_FIRST_LINE);
internalFrame.add(artist, BorderLayout.AFTER_LINE_ENDS);
internalFrame.add(lyrics, BorderLayout.CENTER);
internalFrame.add(ok, BorderLayout.SOUTH);
ok.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e){
try {
FileWriter dir = new FileWriter("test.txt");
BufferedWriter buffer = new BufferedWriter(dir);
buffer.write(nameOfSong.getText());
buffer.newLine();
buffer.write(artist.getText());
buffer.newLine();
buffer.write(lyrics.getText());
buffer.close();
} catch (Exception z) {
// TODO Auto-generated catch block
System.err.println("Error: " + z.getMessage());
}
}
});
internalFrame.setVisible(true);
}
}
但是不是,有人知道為什么嗎?
它可能確實在當前工作目錄中創建了它-可能不是您想要的。 檢查那里(如果使用IDE,請參閱目錄的啟動屬性),或嘗試使用絕對路徑,首先是“ c:\\\\ tmp \\\\ myfile.txt”,“ / home / myhome / myfile.txt”。
從評論中跟進Q:
我希望文件名是nameOfSong.getText()... new FileWriter(“ nameOfSong.getText()。txt”)中的文本,它不會
new FileWriter(nameOfSong.getText() + ".txt" )
根據另一條評論。
我敢打賭它確實會創建文件,但是您可能會在錯誤的位置查找它。 你知道它在哪里寫文件嗎?
將以下代碼行放入您的程序中以查找:
System.out.println(System.getProperty("user.dir"));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.