1.界面要求如下:
2.选择左侧列表的好友,编辑信息后点击发送将信息传到聊天记录上,如下:
3.上代码:
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.List;
import javax.swing.*;
import javax.swing.border.TitledBorder;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
public class ChatClient extends JFrame implements ActionListener{
String[] name = {"兵临城下", "建国", "蛋蛋", "王小仙", "李小健"};
JList<String> jList = new JList<String>(name);
String person;
JTextArea jta_1 = new JTextArea(8, 20);
JTextArea jta_2 = new JTextArea(2, 30);
JButton jb_sent = new JButton("发送");
JButton jb_clear = new JButton("清空");
JPanel jp_1 = new JPanel();
JPanel jp_2 = new JPanel();
JPanel jp_3 = new JPanel();
JPanel jp_4 = new JPanel();
public ChatClient() {
super("聊天室客户端");
init();
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(this.EXIT_ON_CLOSE);
this.setVisible(true);
}
public void init() {
//组装视图
this.setLayout(new BorderLayout());
this.setSize(370, 340);
//组装顶部
jList.setFixedCellWidth(90);
jList.setFixedCellHeight(31);
TitledBorder tb_1 = new TitledBorder("好友列表");
jList.setBorder(tb_1);
jp_1.add(jList);
TitledBorder tb_2 = new TitledBorder("聊天记录");
jta_1.setBorder(tb_2);
jp_2.add(new JScrollPane(jta_1));
//组装底部
TitledBorder tb_3 = new TitledBorder("请输入文字:");
jta_2.setBorder(tb_3);
jp_4.add(jb_sent);
jp_4.add(jb_clear);
Box vBox = Box.createVerticalBox();
vBox.add(jta_2);
vBox.add(jp_4);
jp_3.add(vBox);
this.add(jp_1, BorderLayout.WEST);
this.add(jp_2);
this.add(jp_3, BorderLayout.SOUTH);
//注册监听器
jb_sent.addActionListener(this);
jb_clear.addActionListener(this);
//注册监听器
jList.addListSelectionListener(new ListSelectionListener() {
@Override
public void valueChanged(ListSelectionEvent e) {
List<String> selectedValuesList = jList.getSelectedValuesList();
person = "";
for(String str : selectedValuesList) {
StringBuilder sb = new StringBuilder(person);
sb.append(str).append(",");
person = sb.toString();
}
//删掉最后一个逗号
person =person.substring(0, person.length() - 1);
}
});
}
public static void main(String[] args) {
new ChatClient();
}
@Override
public void actionPerformed(ActionEvent e) {
Object cmd = e.getSource();
if(cmd == jb_sent) {
String str = jta_2.getText();
if("".equals(str)) {
JOptionPane.showMessageDialog(jb_sent, "请重新输入!");
return;
}
else {
jta_1.append("我对" + person + "说:" + str + "\n");
jta_2.setText("");
return;
}
}
if(cmd == jb_clear) {
jta_1.setText("");
return;
}
}
}