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