JButton没有做它应该做的事情

时间:2012-12-05 04:43:13

标签: java swing jpanel jbutton jlabel

我是一名java初学者,我尝试制作一个基本程序,删除Windows中临时文件中的某个文件。当我没有实现JPanel& amp;时,它确实删除了文件而没有任何问题。 JFrame,但从那以后我没有运气。当按下“确定删除”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();

        }
    }




}

1 个答案:

答案 0 :(得分: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(...)

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