不知道是不是我写的不对,点击按钮后没有反应,我设置监听器了,相关代码如下:
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()这个函数。
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()这个函数。
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();
}
}}
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();
} });
}
}
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("----------");
}}