Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

JButton not doing what it's supposed to do

I'm a java beginner and I tried making a basic program that will delete a certain file in the temp files in Windows. It did delete the file without a problem when I hadn't implemented the JPanel & JFrame but I haven't had any luck since. It is supposed to delete the file when the "Delete for sure" jbutton is pressed and exit the program when the "exit" jbutton is pressed. All it does right now is bring up the GUI and nothing else. Not even system out prints. Here is the code:

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

        }
    }




}
like image 500
Andrew Avatar asked Dec 29 '25 03:12

Andrew


1 Answers

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

The panel object is never placed in any container that is part of a hierarchy leading to a top-level window. In other words, it's not placed in anything that is sitting in either a JFrame or JDialog, and so it will never be displayed.

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

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

It makes no sense to place this windowEvent method in an ActionListener, since that is part of a WindowListener, something completely different. Why not simply call System.exit(0); in the actionPerformed(...) method?

Also your code shouldn't have any static fields or methods as that is antithetical to object-oriented programming.

like image 76
Hovercraft Full Of Eels Avatar answered Dec 31 '25 16:12

Hovercraft Full Of Eels