📄 chatui.java
字号:
package clientele;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Rectangle;
import java.awt.SystemColor;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.ScrollPaneConstants;
import javax.swing.UIManager;
public class ChatUI extends JFrame
{
private static final long serialVersionUID = 1453456465L;
/**
* 文件
*/
File file;
/**
* 文本域:存放聊天记录
*/
JTextArea jTextArea1 = null;
/**
* 文本域:聊天输入
*/
JTextArea jTextArea2 = null;
/**
* 关闭按钮
*/
JButton jButton1 = null;
/**
* 发送按钮
*/
JButton jButton2 = null;
/**
* 窗体
*/
JFrame jFrame = null;// 窗体
/**
* 添加按钮等
*/
JPanel jPanel = null;
/**
* 聊天发送者号码
*/
int souceid = 0;// 聊天发送者
/**
* 聊天接收者号码
*/
int destid = 0;// 聊天目标
/**
* 添加文本区
*/
JScrollPane jScrollPane1 = null;
/**
* 添加文本区
*/
JScrollPane jScrollPane2 = null;
/**
* 构造函数
*/
public ChatUI(int souceid, int destid)
{
this.souceid = souceid;
this.destid = destid;
}
/**
* 此方法初始化
*/
public JFrame getJFrame()
{
if (jFrame == null)
{
jFrame = new JFrame();
jFrame.setBackground(SystemColor.inactiveCaption);
jFrame.setSize(460, 190);
jFrame.setContentPane(getJPanel());
Toolkit toolkit = jFrame.getToolkit();
Dimension screen = toolkit.getScreenSize();
jFrame.setIconImage(Toolkit.getDefaultToolkit().getImage(
getClass().getResource("/picture/client.jpg")));
jFrame.setBounds(screen.width / 2 - 460 / 2,
screen.height / 2 - 350 / 2, 379, 351);// //让窗体在屏幕正中央显示
jFrame.setVisible(true);
jFrame.setResizable(false);
jFrame.getRootPane().setDefaultButton(jButton2);
jFrame.addWindowListener(new WindowAdapter() {
public void windowActivated(WindowEvent e)
{
String name = ".//" + String.valueOf(souceid) + ".txt";
PrintWriter outputStream = null;
try
{
outputStream = new PrintWriter(new FileWriter(name));
outputStream.println(jTextArea1.getText());
outputStream.close();
}
catch (IOException e1)
{
e1.printStackTrace();
}
}
});
}
return jFrame;
}
/**
* 此方法初始化jPanel
*/
public JPanel getJPanel()
{
if (jPanel == null)
{
jPanel = new JPanel();
jPanel.setBackground(new Color(153, 153, 255));
jPanel.setLayout(null);
}
if (jTextArea1 == null)
{
jTextArea1 = new JTextArea();
jTextArea1.setTabSize(8);
}
if (jTextArea2 == null)
{
jTextArea2 = new JTextArea();
jTextArea2.setFocusCycleRoot(true);
}
if (jButton1 == null)
{
jButton1 = new JButton();
jButton1.setBackground(UIManager.getColor("Button.shadow"));
jButton1.setFont(new Font("", Font.PLAIN, 14));
}
if (jButton2 == null)
{
jButton2 = new JButton();
}
if (jScrollPane1 == null)
{
jScrollPane1 = new JScrollPane();
}
if (jScrollPane2 == null)
{
jScrollPane2 = new JScrollPane();
}
jTextArea1.setBackground(Color.white);
jTextArea1.setFont(new java.awt.Font("Dialog", Font.PLAIN, 15));
jTextArea1.setForeground(Color.black);
jTextArea1.setBorder(BorderFactory.createLineBorder(Color.green));
jTextArea1.setLineWrap(true);
jTextArea1.setBounds(6, 9, 100, 200);
jTextArea1.setEditable(false);
jScrollPane1.setBounds(new Rectangle(6, 9, 360, 180));
jScrollPane1.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED);
jScrollPane1.getViewport().add(jTextArea1);// 聊天记录
jTextArea2.setFont(new Font("宋体", Font.PLAIN, 15));
jTextArea2.setBorder(BorderFactory.createLineBorder(Color.black));
jTextArea2.setLineWrap(true);
jTextArea2.setBounds(new Rectangle(7, 207, 200, 61));
jScrollPane2.setBounds(6, 207, 360, 60);
jScrollPane2.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED);
jScrollPane2.getViewport().add(jTextArea2);
jButton1.setBounds(new Rectangle(46, 278, 79, 24));
jButton1.setForeground(SystemColor.menuText);
jButton1.setText("关闭");
jButton2.setBounds(new Rectangle(249, 278, 90, 24));
jButton2.setFont(new Font("", Font.PLAIN, 14));
jButton2.setForeground(SystemColor.menuText);
jButton2.setText("发送(S)");
jButton2.setMnemonic('S');
/**
* 发送按钮行为事件监听
*/
jButton2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
{
if (e.getSource() == jButton2)
{
String msg = Client.getTime() + " 用户"
+ String.valueOf(souceid) + "说:\n"
+ jTextArea2.getText() + "\n";
jTextArea1.append(msg);// 把信息追加
jTextArea1.selectAll();
jTextArea2.setText("");// 清空
Client.client.sendChatMsg(msg, souceid, destid);
// 执行Client的sendChatMsg()方法
}
String name = ".//" + String.valueOf(souceid) + ".txt";
PrintWriter outputStream = null;
try
{
outputStream = new PrintWriter(new FileWriter(name));
outputStream.println(jTextArea1.getText());
outputStream.flush();
outputStream.close();
}
catch (IOException e1)
{
e1.printStackTrace();
}
}
});
/**
* 保存聊天记录按钮行为事件监听
*/
jButton1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
{
if (e.getSource() == jButton1)
jFrame.dispose();// 隐藏窗体
}
});
jPanel.setEnabled(true);
jPanel.add(jButton1);
jPanel.add(jButton2);
jPanel.add(jScrollPane1);
jPanel.add(jScrollPane2);
return jPanel;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -