不知道是不是我写的不对,点击按钮后没有反应,我设置监听器了,相关代码如下:
import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.SwingConstants;
public class saveListener implements ActionListener {

JDialog saveDialog = new JDialog (Diary.diary, "提示", true);
JLabel saveLabel = new JLabel ("保存成功");
JButton knownButton = new JButton ("我知道了"); public void actionPerformed(ActionEvent e) {
String contents = Diary.diary.WriteArea.getText(); /*必须放在要执行的方法体里边*/
saveDialog.setBounds(100, 100, 250, 80);
saveDialog.setLayout(new GridLayout(2, 1));
saveLabel.setHorizontalAlignment(SwingConstants.CENTER);
saveDialog.add(saveLabel);
saveDialog.add(knownButton);
saveDialog.setVisible(true);

WriteOut(contents);

knownButton.addActionListener(new ActionListener () { public void actionPerformed(ActionEvent e) {

saveDialog.dispose();
}

});
}
主要问题是:写着“我知道了”的按钮knownButton点击后,没有反应,我用的是.dispose()这个函数。

解决方案 »

  1.   

    你先在你的saveDialog.dispose();前面加一句输出语句,或者debug一下  确定一下 这里的代码是不是执行了。
      

  2.   

    全部如下:
    import java.awt.BorderLayout;
    import java.awt.Color;
    import java.awt.Container;
    import java.awt.GridLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent;
    import java.text.SimpleDateFormat;
    import java.util.Calendar;
    import java.util.Date;import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;
    import javax.swing.JTextArea;
    import javax.swing.JTextField;
    public class Diary extends JFrame {

    static Diary diary = new Diary();
    static JTextField TitleField = new JTextField(30);
    static JTextArea WriteArea = new JTextArea(30, 50);
    JPanel jp = new JPanel();

    public static void main(String[] args) {
    diary.launchFrame(); }

    public void launchFrame () {
    this.setLocation(400, 100);
    this.setSize(700, 630);
    this.setBackground(new Color(100, 100, 100));
    this.setTitle("日记薄");
    this.setVisible(true);
    this.setResizable(false);
    this.addWindowListener(new WindowAdapter() {
    public void windowClosing (WindowEvent e) {
    dispose();
    System.exit(0);
    }
    });
    this.assignFrame();

    }
    public void assignFrame() {
    JButton saveButton = new JButton("保存"); JButton openButton = new JButton("打开"); JButton closeButton = new JButton("关闭");
    JPanel TitleFieldPanel = new JPanel(); JPanel WriteAreaPanel = new JPanel(); JPanel ButtonPanel = new JPanel();
    Container pane = this.getContentPane();
    SimpleDateFormat YMD = new SimpleDateFormat ("yyyy年MM月dd日----EEE");
    String title = YMD.format(new Date());
    JScrollPane js = new JScrollPane(WriteArea); /*必须把进度条new在方法体里边*/

    WriteArea.setLineWrap(true);
    pane.setLayout(new BorderLayout()); /*增加进度条*/
    TitleFieldPanel.add(TitleField);
    TitleField.setText(title);
    WriteAreaPanel.add(js);
    pane.add(WriteAreaPanel);
    pane.add("North", TitleFieldPanel);/* pane.add("Center", WriteAreaPanel)*/; pane.add("East", ButtonPanel);

    ButtonPanel.setLayout(new GridLayout (3, 1));

    ButtonPanel.add(saveButton); ButtonPanel.add(openButton); ButtonPanel.add(closeButton);
    saveButton.addActionListener(new saveListener());
    openButton.addActionListener(new openListener());
    closeButton.addActionListener(new ActionListener () { public void actionPerformed(ActionEvent e) {
    dispose();
    System.exit(0);
    }

    });





    }

    }import java.awt.GridLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.OutputStreamWriter;import javax.swing.JButton;
    import javax.swing.JDialog;
    import javax.swing.JLabel;
    import javax.swing.SwingConstants;
    public class saveListener implements ActionListener {

    JDialog saveDialog = new JDialog (Diary.diary, "提示", true);
    JLabel saveLabel = new JLabel ("保存成功");
    JButton knownButton = new JButton ("我知道了"); public void actionPerformed(ActionEvent e) {
    String contents = Diary.diary.WriteArea.getText(); /*必须放在要执行的方法体里边*/
    saveDialog.setBounds(100, 100, 250, 80);
    saveDialog.setLayout(new GridLayout(2, 1));
    saveLabel.setHorizontalAlignment(SwingConstants.CENTER);
    saveDialog.add(saveLabel);
    saveDialog.add(knownButton);
    saveDialog.setVisible(true);

    WriteOut(contents);

    knownButton.addActionListener(new ActionListener () { public void actionPerformed(ActionEvent e) {
    System.out.println("看看执行没有");
    saveDialog.dispose();
    }

    });
    }

    public void WriteOut (String s) {
    File f = new File ("f:\\diaries");
    f.mkdirs();
    try {
    FileOutputStream savingContent = new FileOutputStream ("f:\\diaries\\" + Diary.diary.TitleField.getText() + ".txt", true);
    OutputStreamWriter osw = new OutputStreamWriter (savingContent);
    osw.write(s);
    osw.flush();
    osw.close();
    } catch (IOException e) {
    e.printStackTrace();
    }
    }}
      

  3.   

    你的代码很有问题,简要说
    1.对话框不关闭的问题。之所以dispose方法没有执行,是因为你对 “我知道了”那个按钮的添加侦听在setVisible()方法之后,实际上必须要在setVisible之前添加才有效
    2.添加各个面板之前就setVisible,导致无法看到界面,如果那样做必须valiate()一下
    3.代码很多地方不符合Java命名规范
    给你直接贴出来可以跑的代码了,open的侦听你没贴出来代码,我注解掉了
    import java.awt.BorderLayout;
    import java.awt.Color;
    import java.awt.Container;
    import java.awt.GridLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent;
    import java.text.SimpleDateFormat;
    import java.util.Calendar;
    import java.util.Date;import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;
    import javax.swing.JTextArea;
    import javax.swing.JTextField;
    public class Diary extends JFrame {    static Diary diary = new Diary();
        static JTextField TitleField = new JTextField(30);
        static JTextArea WriteArea = new JTextArea(30, 50);
        JPanel jp = new JPanel();    public static void main(String[] args) {
            diary.launchFrame();    }    public void launchFrame () {
            this.setLocation(400, 100);
            this.setSize(700, 630);
            this.setBackground(new Color(100, 100, 100));
            this.setTitle("日记薄");
            this.setVisible(true);
            this.setResizable(false);
            this.addWindowListener(new WindowAdapter() {
                public void windowClosing (WindowEvent e) {
                    dispose();
                    System.exit(0);
                }
            });
            this.assignFrame();    }
        public void assignFrame() {
            JButton saveButton = new JButton("保存");
            JButton openButton = new JButton("打开");
            JButton closeButton = new JButton("关闭");
            JPanel titleFieldPanel = new JPanel();
            JPanel writeAreaPanel = new JPanel();
            JPanel buttonPanel = new JPanel();
            Container pane = this.getContentPane();
            SimpleDateFormat YMD = new SimpleDateFormat ("yyyy年MM月dd日----EEE");
            String title = YMD.format(new Date());
            JScrollPane js = new JScrollPane(WriteArea);  /*必须把进度条new在方法体里边*/        WriteArea.setLineWrap(true);
            pane.setLayout(new BorderLayout());  /*增加进度条*/
            titleFieldPanel.add(TitleField);
            TitleField.setText(title);
            writeAreaPanel.add(js);
            pane.add(writeAreaPanel);
            pane.add("North", titleFieldPanel);/* pane.add("Center", WriteAreaPanel)*/;
            pane.add("East", buttonPanel);        buttonPanel.setLayout(new GridLayout (3, 1));        buttonPanel.add(saveButton);
            buttonPanel.add(openButton);
            buttonPanel.add(closeButton);
            saveButton.addActionListener(new SaveListener());
    //openButton.addActionListener(new openListener());
            closeButton.addActionListener(new ActionListener () {            public void actionPerformed(ActionEvent e) {
                    dispose();
                    System.exit(0);
                }        });         pane.validate();
            System.out.println("----------");
        }}
    import java.awt.*;
    import java.awt.event.*;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.OutputStreamWriter;import javax.swing.JButton;
    import javax.swing.JDialog;
    import javax.swing.JLabel;
    import javax.swing.SwingConstants;
    public class SaveListener implements ActionListener {    JDialog saveDialog = new JDialog ();
        JLabel saveLabel = new JLabel ("保存成功");
        JButton knownButton = new JButton ("我知道了");    //actionPerformed
        public void actionPerformed(ActionEvent e) {
    //        String contents = Diary.diary.WriteArea.getText();  /*必须放在要执行的方法体里边*/
            saveDialog.setBounds(100, 100, 250, 80);
            saveDialog.setLayout(new GridLayout(2, 1));
            saveLabel.setHorizontalAlignment(SwingConstants.CENTER);
            saveDialog.add(saveLabel);
            saveDialog.add(knownButton);
            saveDialog.setVisible(true);//WriteOut(contents);        knownButton.addActionListener(new ActionListener() {            public void actionPerformed(ActionEvent e) {                saveDialog.dispose();
    //                saveDialog.dispose();
                }        });
        }
    }
      

  4.   

    openListener这个类 还没贴上来
      

  5.   

    不好意思上个帖子的SaveListener贴错了,重新贴一下import java.awt.GridLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.OutputStreamWriter;import javax.swing.JButton;
    import javax.swing.JDialog;
    import javax.swing.JLabel;
    import javax.swing.SwingConstants;
    public class SaveListener implements ActionListener {    JDialog saveDialog = new JDialog (Diary.diary, "提示", true);
        JLabel saveLabel = new JLabel ("保存成功");
        JButton knownButton = new JButton ("我知道了");    public void actionPerformed(ActionEvent e) {
            String contents = Diary.diary.WriteArea.getText();  /*必须放在要执行的方法体里边*/
            saveDialog.setBounds(100, 100, 250, 80);
            saveDialog.setLayout(new GridLayout(2, 1));
            saveLabel.setHorizontalAlignment(SwingConstants.CENTER);
            saveDialog.add(saveLabel);
            saveDialog.add(knownButton);
            knownButton.addActionListener(new ActionListener () {            public void actionPerformed(ActionEvent e) {
                    System.out.println("看看执行没有");
                    saveDialog.dispose();
                }        });        saveDialog.setVisible(true);        WriteOut(contents);
        }    public void WriteOut (String s) {
            File f = new File ("f:\\diaries");
            f.mkdirs();
            try {
                FileOutputStream savingContent = new FileOutputStream ("f:\\diaries\\" + Diary.diary.TitleField.getText() + ".txt", true);
                OutputStreamWriter osw = new OutputStreamWriter (savingContent);
                osw.write(s);
                osw.flush();
                osw.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }}--------------------------------------import java.awt.BorderLayout;
    import java.awt.Color;
    import java.awt.Container;
    import java.awt.GridLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent;
    import java.text.SimpleDateFormat;
    import java.util.Calendar;
    import java.util.Date;import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;
    import javax.swing.JTextArea;
    import javax.swing.JTextField;
    public class Diary extends JFrame {    static Diary diary = new Diary();
        static JTextField TitleField = new JTextField(30);
        static JTextArea WriteArea = new JTextArea(30, 50);
        JPanel jp = new JPanel();    public static void main(String[] args) {
            diary.launchFrame();    }    public void launchFrame () {
            this.setLocation(400, 100);
            this.setSize(700, 630);
            this.setBackground(new Color(100, 100, 100));
            this.setTitle("日记薄");
            this.setVisible(true);
            this.setResizable(false);
            this.addWindowListener(new WindowAdapter() {
                public void windowClosing (WindowEvent e) {
                    dispose();
                    System.exit(0);
                }
            });
            this.assignFrame();    }
        public void assignFrame() {
            JButton saveButton = new JButton("保存");
            JButton openButton = new JButton("打开");
            JButton closeButton = new JButton("关闭");
            JPanel titleFieldPanel = new JPanel();
            JPanel writeAreaPanel = new JPanel();
            JPanel buttonPanel = new JPanel();
            Container pane = this.getContentPane();
            SimpleDateFormat YMD = new SimpleDateFormat ("yyyy年MM月dd日----EEE");
            String title = YMD.format(new Date());
            JScrollPane js = new JScrollPane(WriteArea);  /*必须把进度条new在方法体里边*/        WriteArea.setLineWrap(true);
            pane.setLayout(new BorderLayout());  /*增加进度条*/
            titleFieldPanel.add(TitleField);
            TitleField.setText(title);
            writeAreaPanel.add(js);
            pane.add(writeAreaPanel);
            pane.add("North", titleFieldPanel);/* pane.add("Center", WriteAreaPanel)*/;
            pane.add("East", buttonPanel);        buttonPanel.setLayout(new GridLayout (3, 1));        buttonPanel.add(saveButton);
            buttonPanel.add(openButton);
            buttonPanel.add(closeButton);
            saveButton.addActionListener(new SaveListener());
    //openButton.addActionListener(new openListener());
            closeButton.addActionListener(new ActionListener () {            public void actionPerformed(ActionEvent e) {
                    dispose();
                    System.exit(0);
                }        });         pane.validate();
            System.out.println("----------");
        }}