3

私は Java の初心者で、Windows の一時ファイル内の特定のファイルを削除する基本的なプログラムを作成してみました。JPanel と JFrame を実装していないときは問題なくファイルを削除しましたが、それ以来運がありませんでした。「確実に削除」ボタンを押すとファイルを削除し、「終了」ボタンを押すとプログラムを終了するようになっています。現在実行しているのは、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 に答える