package exerciseEvent;
/*GUI设计步骤:
建立用户界面
设计一个顶层容器对象,如JFrame
确定布局,增加组件
改变组件颜色、字体
增加事件处理
编写事件监听器类(内含事件处理方法)
在事件源上注册事件监听器对象
显示用户界面
*/
/*
习题:利用图形界面编写一个简单的文本编辑器,包含一个文本域和一个保存按钮。单击保存按钮将文本域(TextArea)中的内容保存到一个文本文件mytext.txt中。
提示:
使用TextArea的getText()方法可以获得文本域中的内容。
使用内部类定义事件监听器,实现事件监听器接口ActionListener。
可使用fileWriter的Write(String str, int off, int len)方法将内容写入文件。
*/
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.*;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextArea;
public class demo8_Event extends JFrame{
final String path = "D:/mytext.txt";
JPanel jp=null;
JTextArea jta=null;
JButton jb=null;
String filename;
public static void main(String[] args) {
// TODO Auto-generated method stub
demo8_Event ex=new demo8_Event();
}
public demo8_Event(){
init(); //初始化
jb.addActionListener(new TextActionListener());
this.setSize(600, 450);
this.setResizable(false); //表示生成的窗体大小是由程序员决定的,用户不可以自由改变该窗体的大小--不可以扩大缩小
this.setVisible(true); //可视化
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //关闭文件
}
void init(){
jta=new JTextArea(22,50); //先设置组件
jb=new JButton("Save");
jb.setBackground(Color.YELLOW);
jp=new JPanel();
jp.setBackground(Color.GREEN);
jp.add(jta); //将组件添加入面板
jp.add(jb);
this.add(jp); //将面板添加入容器
//this.add(jp,BorderLayout.CENTER); //对组件进行布局,不布局可以,默认布局BorderLayout
//this.add(jb,BorderLayout.SOUTH);
//System.out.println(this);
}
class writeFile{
public writeFile(String path,String str) throws IOException{
File f = new File(path);
OutputStream out = new FileOutputStream(f); // 创建一个输出流对象
byte[] b = str.getBytes();//将字符串转化为byte数组存放
out.write(b); //向文件中写入
out.close(); //关闭输出流
}
}
class TextActionListener implements ActionListener{
@Override
public void actionPerformed(ActionEvent a) {
String str = jta.getText();
if(a.getActionCommand().equals("Save")){
try{
System.out.println(str); //输出str
new writeFile(path,str); //向文件内写入str
}catch(IOException e){
System.out.println(e.getStackTrace());
}
}
}
}
}