java建立一个小小留言板

制作如图一个留言板的界面,并按要求加入所需控件,并能按要求进行窗口
控件的布局。并按要求为按钮、文本框、窗口添加事件,使之实现提交显示留言,
清屏,留言至顶和至尾。要求文本框能自动产生滚动条,界面美观。
16
注意:
1、通过两个文本文件存储表情和留言内容。
1)Expression.dat:用于存储表情,如:微笑、大哭、流泪等;每个表情占一行。
2)Msg.dat:用于存储留言信息,留言信息格式为:
[2019-10-04 12:35] 你微笑地说:今天下午去图书馆吗?
其中:时间是提交留言的时间,每条留言一行。
2、窗口启动的时候(或点击“查看”按钮时),从 Msg.dat 文件中读出所有留言
记录,显示在文本框中;从 Expression.dat 文件中读出所有表情记录,显示在
表情下拉列表中。将 Msg.dat 中所有留言记录,倒序显示在文本域中。
3、点击提交按钮,将表单内容存入文件,同时刷新文本框的留言内容。
4、“清屏”代表清除留言框内容,“至顶”和“至尾”功能是当留言内容过多时,
将滚动条滚动到最上面或最下面,实现过程为移动文本区域里面的光标,使
其指向第一个位置和最后一个位置。(设置光标位置函数为:setCaretPosition(int 位置))

V

//以下是Demo类

public class FrameplusDemo {
	public static void main(String[]args) {
		Frameplus fr = import java.awt.*;
import java.applet.*;
import javax.swing.*;
import java.awt.event.*;
import java.io.*;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Frameplus extends JFrame implements ActionListener,KeyListener{
	JTextArea t1;
	JButton but1,but2,but3,but4,but5,but6;
	JComboBox looks;
	JTextField lo;
	JLabel lbl1,lbl2,lbl3;
	public Frameplus (String title) {
		super(title);
		this.setSize(1000,600);
		this.winInit();
	}
	public void winInit() {
		lbl1 = new JLabel("留言板",0);
		lbl2 = new JLabel("你");
		lbl3 = new JLabel("地说:");
		t1 = new JTextArea("留言内容:\n");
		t1.setEditable(false);//设置留言板内容不可更改
		t1.setBackground(new Color(0xFF,0xFF,0xEE));//设置留言版的背景色
		t1.setForeground(new Color(0,0,255));//设置留言板字体颜色
		lo = new JTextField(35);//设置输入框长度
		looks = new JComboBox();
			//looks.addItem("哭着");
			//looks.addItem("笑着");
			//looks.addItem("哈哈哈哈");
			//looks.addItem("乐呵呵");
			//looks.addItem("笑嘻嘻");
		this.loadExp();          //文件加载表情
		but1 = new JButton("提交");
		but2 = new JButton("清屏");
		but3 = new JButton("至顶");
		but4 = new JButton("至尾");
		but5 = new JButton("查看");
		but6 = new JButton("删除");
		lbl1.setFont(new Font("宋体",Font.BOLD,20));
		lbl2.setFont(new Font("宋体",Font.BOLD,20));
		lbl3.setFont(new Font("宋体",Font.BOLD,20));
		t1.setFont(new Font("宋体",Font.BOLD,20));
		lo.setFont(new Font("宋体",Font.BOLD,20));
		but1.setFont(new Font("宋体",Font.BOLD,20));
		but2.setFont(new Font("宋体",Font.BOLD,20));
		but3.setFont(new Font("宋体",Font.BOLD,20));
		but4.setFont(new Font("宋体",Font.BOLD,20));
		but5.setFont(new Font("宋体",Font.BOLD,20));
		but6.setFont(new Font("宋体",Font.BOLD,20));
		looks.setFont(new Font("宋体",Font.BOLD,20));
		but1.addActionListener(this);  //提交
		but2.addActionListener(this);  //清屏
		but3.addActionListener(this);  //至顶
		but4.addActionListener(this);  //至尾
		but5.addActionListener(this);  //查看
		but6.addActionListener(this);  //删除
		lo.addKeyListener(this);
		//创建不同面板
		JPanel pEast = new JPanel();
		JPanel pSouth = new JPanel();		
		JScrollPane scroll = new JScrollPane(t1);//加滚轮
		pEast.setLayout(new GridLayout(8,1,0,30));//东方为网格布局
		//面板
		pSouth.add(lbl2);pSouth.add(looks);
		pSouth.add(lbl3);pSouth.add(lo);
		pSouth.add(but1); 
		pEast.add(but2);pEast.add(but3);
		pEast.add(but4);pEast.add(but5);
		pEast.add(but6);
		//将面板加入窗口
		add(scroll,"Center");
		add(lbl1,"North");
		add(pEast,"East");
		add(pSouth,"South");
		this.loadMsg();    //加载文件中的内容
		this.addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent e) {
				System.exit(0);
			}
		});
	}
	//加载文件中的表情
	public void loadExp() {
		looks.removeAllItems(); 
		try {
			FileReader Re = new FileReader("Expression.dat");
			BufferedReader br = new BufferedReader(Re);
			String exp = " ";
			while((exp = br.readLine())!=null){
				looks.addItem(exp);
			}
			br.close();
		}catch(IOException e1) {
			System.out.println("读取文件失败"+e1);
		}
	}
	//加载文件中的留言内容
	public void loadMsg() {
		t1.setText("留言内容:\n");
		try {
			BufferedReader br = new BufferedReader(new FileReader("msg.dat"));
			String msg = " ";
			while((msg = br.readLine())!=null) {
				t1.insert(msg+"\n", 6);
			}
			br.close();
		}catch(IOException e1) {
			System.out.println("读文件失败"+e1);
		}
	}
	//提交留言过程
	public void msgSubmit() {
		if(lo.getText().trim().length()==0) return;
		//获取当前时间
		Date crr = new Date();
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd-hh:mm:ss");
		String curr = sdf.format(crr);
		String loms = "["+curr+"]"+"你"+looks.getSelectedItem()+"地说:"+lo.getText();
		t1.insert(loms+"\n", 6);
		//写入msg.dat文件
		File f = new File("Msg.dat");
		try {
			FileWriter fw = new FileWriter(f,true);//追加
			fw.write(loms+"\r\n");
			fw.close();
		}catch(IOException e1) {
			System.out.println("写入文件失败"+e1);
		}
		lo.setText("");
	}
	public void dete() {
		String lom = " ";
		File f = new File("Msg.dat");
		try {
			FileWriter fw = new FileWriter(f);//追加
			fw.write(lom+"\r\n");
			fw.close();
		}catch(IOException e1) {
			System.out.println("写入文件失败"+e1);
		}
	}
	public void actionPerformed(ActionEvent e) {
		String com = e.getActionCommand();
		switch(com) {
		case "提交":{
			msgSubmit();
			break;
		}
		case "清屏":{
			t1.setText("留言内容:\n");
			break;
		}
		case "至顶":{
			t1.setCaretPosition(0);
			break;
		}
		case "至尾":{
			t1.setCaretPosition(t1.getText().length()-1);
			break;
		}
		case "查看":{
			this.loadMsg();
			break;
		}
		case "删除":{
			this.dete();
			break;
		}
		}
	}
	@Override
	public void keyTyped(KeyEvent e) {
		// TODO Auto-generated method stub
		
	}
	@Override
	public void keyPressed(KeyEvent e) {
		// TODO Auto-generated method stub
		if(e.getKeyCode()==10) {
			msgSubmit();
		}
	}
	@Override
	public void keyReleased(KeyEvent e) {
		// TODO Auto-generated method stub
		
	}
}
Vnew Frameplus("小小留言板");
		fr.setVisible(true);
		
	}
}

还有两个文件存表情(Expression.dat)和留言记录(msg.dat)

表情文件可以里要记录“表情”用于导入留言框中的表情复选框中

//附上运行成功的小小留言板

(留言板上的删除按钮没有什么实际功能,只是当留言多了之后,将文件清空…强迫症 哈哈哈)

java 留言板 java留言板课程设计_java