java - 在 Java Swing 应用程序中按下时按钮不创建新文件

标签 java file swing file-io

所以这只是一个带有按钮的窗口,当按下该按钮时,一个新的内部窗口将打开,其中包含三个文本框和一个确定按钮。当按下内部窗口中的确定按钮时,它应该创建一个新文件,但事实并非如此,有人知道为什么吗?

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);
    }
}

最佳答案

我敢打赌它确实创建了文件,但您可能找错了地方。你知道它在哪里写文件吗?

将这行代码放入你的程序中找出:

System.out.println(System.getProperty("user.dir"));

关于java - 在 Java Swing 应用程序中按下时按钮不创建新文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8365173/

相关文章:

java - 在spring MVC中重定向期间传递模型属性并避免在URL中相同

java - 第二次读取一个数字

java - 如果没有互联网连接,则将用户带到设置

java - 在 SymmetricDS 文件同步中,通过从数据库 bean shell 脚本获取动态设置目标基本目录路径

java - 创建 JTextPane 会导致 NullPointerException - OpenOffice Extension

java - 不使用Spring等时如何将Swing GUI与业务逻辑分离

java - ngdbc.jar 等效 Maven 存储库

file - 该系统找不到指定的文件

c - 使用文件符号和命令行语句从文件中获取输入并将其保存在 C 语言中的另一个文件中。无法获取输出

java - 在 java swing 中自定义默认的 html 链接颜色