3

我是一名java初学者,我尝试制作一个基本程序,将删除Windows临时文件中的某个文件。当我没有实现 JPanel 和 JFrame 时,它​​确实毫无问题地删除了文件,但从那以后我没有任何运气。应该在按下“确定删除”jbutton 时删除文件,并在按下“exit”jbutton 时退出程序。它现在所做的只是调出 GUI,仅此而已。甚至没有系统输出打印。这是代码:

import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.File;
import java.io.IOException;


    /**
    * Created with IntelliJ IDEA.
    * User: Andrew
    * Date: 12/4/12
    * Time: 7:09 PM
    * To change this template use File | Settings | File Templates.
    */

    public class DeleteFile {

    public static void main (String args[]) throws IOException {
        frame.setVisible(true);
        frame.setName(boxname);
        frame.setSize(100, 150);
        frame.addWindowListener(new WindowAdapter() {

            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
        });

        button1.setText(buttontext);
        button1.setVisible(true);
        button1.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {

            }
        });
        class Action1 implements ActionListener {
            public void actionPerformed (ActionEvent e) {
                deleteFile();
                JLabel label = new JLabel("Deletion was successful");
                JPanel panel = new JPanel();
                panel.add(label);
            }
        }
        class Action2 implements ActionListener {
            public void actionPerformed (ActionEvent e) {

            }
            public void windowEvent (WindowEvent e) {
                System.exit(0);
            }
        }

        JPanel panel = new JPanel();
        frame.add(panel);
        JButton button = new JButton("Delete for sure?");
        panel.add(button);
        button.addActionListener (new Action1());
        panel.setName(boxname);

        JButton button2 = new JButton("Exit");
        panel.add(button2);
        button2.addActionListener (new Action2());

       // JLabel label = new JLabel(filePath);
       // panel.add(label);




    }






    static String buttontext = "Delete file for sure?";
    static String boxname = "Trepix Temp File Deleter";
    static String filePath = "C:\\Users\\Andrew\\AppData\\Local\\Temp\\CamRec0\\cursor-1.ico";
    static JFrame frame = new JFrame();
    static JButton button1 = new JButton();
    static JPanel panel = new JPanel();







    public static boolean fileIsValid() {
        File file = new File(filePath);

        if (file.exists()) {
            return true;


        } else {
            return false;
        }

    }

    public static void deleteFile() {
        if (fileIsValid() == true) {
            File file = new File(filePath);
            file.delete();

        }
    }




}
4

1 回答 1

4
    class Action1 implements ActionListener {
        public void actionPerformed (ActionEvent e) {
            deleteFile();
            JLabel label = new JLabel("Deletion was successful");
            JPanel panel = new JPanel();
            panel.add(label);
        }
    }

面板对象永远不会放置在任何容器中,该容器是通向顶级窗口的层次结构的一部分。换句话说,它没有放置在 JFrame 或 JDialog 中的任何内容中,因此它永远不会显示。

    class Action2 implements ActionListener {
        public void actionPerformed (ActionEvent e) {

        }
        public void windowEvent (WindowEvent e) {
            System.exit(0);
        }
    }

将此 windowEvent 方法放在 ActionListener 中是没有意义的,因为它是 WindowListener 的一部分,完全不同。为什么不简单地调用System.exit(0);方法actionPerformed(...)呢?

此外,您的代码不应该有任何静态字段或方法,因为这与面向对象编程是对立的。

于 2012-12-05T04:47:37.127 回答