简单聊天室客户端界面的实现(ChatClient.java)

 

1.界面要求如下:

8e69cee1df344bdfb14793bec22d3cc6.png

2.选择左侧列表的好友,编辑信息后点击发送将信息传到聊天记录上,如下:

                                      e8a181404c584ba7a9a487ac3e4e316d.png

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;
		}
	}
}

 

 

  • 2
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,根据你的要求,我为您编写了一个简单聊天室客户端界面实现(ChatClient.java)代码,如下所示: ```java import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class ChatClient extends JFrame implements ActionListener { private JTextArea chatArea; // 聊天记录框 private JTextField inputField; // 输入框 private JList<String> friendList; // 好友列表 private JButton sendBtn; // 发送按钮 private JButton clearBtn; // 清空按钮 public ChatClient() { // 设置窗口标题 this.setTitle("聊天室客户端"); // 创建好友列表 String[] friends = {"张三", "李四", "王五", "赵六"}; friendList = new JList<>(friends); friendList.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); JScrollPane friendScroll = new JScrollPane(friendList); // 创建聊天记录框 chatArea = new JTextArea(); chatArea.setEditable(false); JScrollPane chatScroll = new JScrollPane(chatArea); // 创建输入框和发送按钮 inputField = new JTextField(); sendBtn = new JButton("发送"); sendBtn.addActionListener(this); clearBtn = new JButton("清空"); clearBtn.addActionListener(this); // 创建底部面板,包括输入框和发送按钮 JPanel bottomPanel = new JPanel(new BorderLayout()); bottomPanel.add(inputField, BorderLayout.CENTER); bottomPanel.add(sendBtn, BorderLayout.EAST); bottomPanel.add(clearBtn, BorderLayout.WEST); // 将好友列表、聊天记录框和底部面板添加到窗口中 this.add(friendScroll, BorderLayout.WEST); this.add(chatScroll, BorderLayout.CENTER); this.add(bottomPanel, BorderLayout.SOUTH); // 设置窗口大小和位置 this.setSize(600, 400); this.setLocationRelativeTo(null); // 显示窗口 this.setVisible(true); } public static void main(String[] args) { new ChatClient(); } @Override public void actionPerformed(ActionEvent e) { if (e.getSource() == sendBtn) { // 获取选中的好友列表 int[] selectedIndices = friendList.getSelectedIndices(); if (selectedIndices.length == 0) { JOptionPane.showMessageDialog(this, "请选择要发送消息的好友!"); inputField.requestFocus(); } else { // 组装聊天信息 StringBuilder sb = new StringBuilder(); sb.append("我对"); for (int i = 0; i < selectedIndices.length; i++) { sb.append(friendList.getModel().getElementAt(selectedIndices[i])); if (i < selectedIndices.length - 1) { sb.append(","); } } sb.append("说:"); String message = inputField.getText().trim(); if (message.length() == 0) { JOptionPane.showMessageDialog(this, "聊天信息不能为空!"); inputField.requestFocus(); } else { sb.append(message); // 将聊天信息添加到聊天记录框中 chatArea.append(sb.toString() + "\n"); // 清空输入框 inputField.setText(""); } } } else if (e.getSource() == clearBtn) { // 清空输入框 inputField.setText(""); // 将聊天记录框清空 chatArea.setText(""); } } } ``` 这个代码使用 BorderLayout 布局管理器将好友列表、聊天记录框和底部面板(包括输入框和发送按钮)添加到窗口中。在底部面板中,发送按钮和清空按钮分别添加了事件监听器,当点击这两个按钮时,会触发 actionPerformed 方法,根据按钮的不同,执行相应的操作。 在点击发送按钮时,首先判断是否选择了要发送消息的好友(可以多选),如果没有选择,会弹出提示框提示用户选择好友,然后将选中的好友列表和输入框中的聊天信息组装成一条完整的聊天信息,并将其添加到聊天记录框中。如果输入框中的聊天信息为空,则会弹出提示框提示用户聊天信息不能为空,并将光标定位到输入框中。在点击清空按钮时,会将输入框和聊天记录框清空。 希望这个代码能够满足您的需求,如果有任何问题或需要改进的地方,请随时告诉我。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值