java 聊天_Java实现简易聊天室

importjava.awt.BorderLayout;importjava.awt.Color;importjava.awt.Container;importjava.awt.EventQueue;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.awt.event.FocusEvent;importjava.awt.event.FocusListener;importjava.io.PrintWriter;importjava.net.Socket;importjavax.swing.JFrame;importjavax.swing.JOptionPane;importjavax.swing.JScrollPane;importjavax.swing.JTextArea;importjavax.swing.JTextField;importjavax.swing.border.BevelBorder;public class MyClient extendsJFrame{privatePrintWriter writer;

Socket socket;private JTextArea ta=newJTextArea();private JTextField tf=newJTextField();

Container cc;publicMyClient(String title) {super(title);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

cc=this.getContentPane();final JScrollPane scrollPane=newJScrollPane();

scrollPane.setBorder(newBevelBorder(BevelBorder.RAISED));

getContentPane().add(scrollPane,BorderLayout.CENTER);

scrollPane.setViewportView(ta);

cc.add(tf,"South");

tf.addFocusListener(new JTextFieldListener(tf,"请在此输入内容"));

tf.addActionListener(newActionListener() {public voidactionPerformed(ActionEvent e) {if(tf.getText().isEmpty()) {

JOptionPane.showMessageDialog(MyClient.this, "请输入内容!");

}else{

writer.println(tf.getText());

ta.append(tf.getText()+"\n");

ta.setSelectionEnd(ta.getText().length());

tf.setText("");

}

}

});

}//焦点监听器

class JTextFieldListener implementsFocusListener{private String hintText; //提示文字

privateJTextField textField;publicJTextFieldListener(JTextField textField,String hintText) {this.textField=textField;this.hintText=hintText;

textField.setText(hintText);//默认直接显示

textField.setForeground(Color.GRAY);

}

@Overridepublic voidfocusGained(FocusEvent e) {//获取焦点时,清空提示内容

String temp=textField.getText();if(temp.equals(hintText)){

textField.setText("");

textField.setForeground(Color.BLACK);

}

}

@Overridepublic voidfocusLost(FocusEvent e) {//失去焦点时,没有输入内容,显示提示内容

String temp=textField.getText();if(temp.equals("")) {

textField.setForeground(Color.GRAY);

textField.setText(hintText);

}

}

}private voidconnect() {

ta.append("尝试连接\n");try{

socket=new Socket("127.0.0.1",8998);

writer=new PrintWriter(socket.getOutputStream(),true);

ta.append("完成连接\n");

}catch(Exception e) {

e.printStackTrace();

}

}public static voidmain(String[] args) {//EventQueue事件队列,封装了异步事件指派机制

EventQueue.invokeLater(newRunnable(){public voidrun() {

MyClient client=new MyClient("向服务器发送数据");

client.setSize(400,400);

client.setVisible(true);

client.connect();

}

});

}

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值