Java聊天室的UI代码,有点儿小问题

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;

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 UI_ChatBoxJFrame extends JFrame
{
	private String name;
	
	private JTextArea messageArea;
	private JTextField sendArea;
	private JButton sendButton;
	private JButton exitButton;
	private PrintWriter out;
	private JScrollPane scrollPane;
	private ButtonListener buttonListener;
	
	public UI_ChatBoxJFrame(String name, String host, int port) throws IOException
	{
		this(name, new Socket(host, port));
	}
	
	public UI_ChatBoxJFrame(String name, Socket socket) throws IOException
	{
		this.setBounds(400,300,400,300);
		this.setDefaultCloseOperation(EXIT_ON_CLOSE);
		this.setVisible(true);
		
		this.messageArea = new JTextArea();
		this.messageArea.setEditable(false);
		this.scrollPane = new JScrollPane(this.messageArea);
		this.getContentPane().add(this.scrollPane);
		
		JPanel panel = new JPanel();
		this.getContentPane().add(panel,"South");
		this.sendArea = new JTextField(20);
		panel.add(this.sendArea);
		
		buttonListener = new ButtonListener();
		
		sendButton = new JButton("发送");
		panel.add(sendButton);
		sendButton.addActionListener(buttonListener);
		
		exitButton = new JButton("离开");
		panel.add(exitButton);
		exitButton.addActionListener(buttonListener);
		
		this.name = name;
		Socket socket1 = socket;
		this.out = new PrintWriter(socket1.getOutputStream(),true);
		this.out.println(name);
		
		BufferedReader in = new BufferedReader(new InputStreamReader(socket1.getInputStream()));
		
		String context = in.readLine();
		
		messageArea.append("now " + context + "\n");
		
		context = in.readLine();
		while(context != null && !context.trim().equals(""))
		{
			messageArea.append(context + "\n");
			context = in.readLine();
		}
		
		in.close();
		out.close();
		socket1.close();
		
		sendButton.setEnabled(false);
		exitButton.setEnabled(false);
	} 
	
	class ButtonListener implements ActionListener
	{

		@Override
		public void actionPerformed(ActionEvent e) {
			// TODO Auto-generated method stub
			if(e.getSource() == sendButton)
			{
				out.println(name + "\n" + sendArea.getText());
				messageArea.append("我" + "\n" + sendArea.getText());
				sendArea.setText("");
			}
			
			if(e.getSource() == exitButton)
			{
				messageArea.setText("离线\n");
				out.println(name + "离线\n");
				
				sendButton.setEnabled(false);
				exitButton.setEnabled(false);
			}
		}
		
	}
	
	public static void main(String[] args) throws IOException
	{
		new UI_ChatBoxJFrame("啊林","202.119.161.101",6000);
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值