import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.PrintWriter;
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 Chat extends JFrame implements ActionListener {
JTextField txtMess = new JTextField();
JTextArea txtContent = new JTextArea();
Chat(){
this.setSize(400, 400);
JButton btnSend = new JButton("发送");
JButton btnGbi = new JButton("关闭");
JScrollPane spContent = new JScrollPane(txtContent);
txtContent.setEditable(false);//将文本框设置为不可编辑
//当一个容器内放置了许多组件,而容器的显示区域不足以同时显示所有组件时,如果让容器带滚动条,通过移动滚动条的滑块,容器中位置上的组件就能看到。滚动面板JScrollPane能实现这样的要求,JScrollPane是带有滚动条的面板。
btnSend.addActionListener(this);
btnGbi.addMouseListener(new Press());
JPanel panSmall = new JPanel();
JPanel panSS = new JPanel();
panSmall.setLayout(new GridLayout(1, 2));
panSS.setLayout(new GridLayout(1, 2));
panSS.add(btnGbi);
panSS.add(btnSend);
panSmall.add(txtMess);
panSmall.add(panSS);
JPanel panBig = new JPanel();
panBig.setLayout(new GridLayout(1, 1));
panBig.add(panSmall);
this.setLocation(760,340);
this.setLayout(new BorderLayout());
this.add(spContent,BorderLayout.CENTER);
this.add(panBig, BorderLayout.SOUTH);
try {
File file = new File("e:/a/a.txt");
FileReader fr = new FileReader(file);
BufferedReader br = new BufferedReader(fr);
//从字符输入流中读取文本并缓冲字符,以便有效地读取字符,数组和行
while (br.ready()) {
txtContent.append(br.readLine()+"\n");
}
} catch (Exception e) {
}
}
@Override
public void actionPerformed(ActionEvent arg0){
txtContent.append(txtMess.getText()+"\n");
try {
File f = new File("e:/a/a.txt");
FileWriter fw = new FileWriter(f,true);
PrintWriter pw = new PrintWriter(fw);
pw.println(txtMess.getText());
pw.close();
} catch (Exception e) {
}
txtMess.setText("");
}
private class Press extends MouseAdapter {//这里比MouseListener好用
public void mousePressed(MouseEvent e) {
Chat.this.setDefaultCloseOperation(Chat.DISPOSE_ON_CLOSE);
Chat.this.setDefaultCloseOperation(Chat.EXIT_ON_CLOSE);
setVisible(false);//关闭窗口
}
}
public static void main(String args[]){
Chat c = new Chat();
((Chat)c).setVisible(true);
}
}
public class Chat extends JFrame implements ActionListener {//QQMain Chat QQ聊天窗口
最新推荐文章于 2023-05-19 00:14:19 发布
该博客介绍了一个使用Java Swing库创建的简单聊天应用程序。程序包括一个文本输入字段、一个发送按钮、一个关闭按钮和一个不可编辑的文本区域来显示聊天记录。用户输入的消息会被追加到文本区域,并保存到文件中。关闭按钮触发窗口关闭。代码示例展示了如何布局组件、监听事件以及读写文件。
摘要由CSDN通过智能技术生成