package JframeClient;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.border.MatteBorder;
import Jframe.Message;
public class JframeSocket extends JFrame implements ActionListener, KeyListener{
private Message msg;
private JPanel receive, send;
private JTextField sendText;
private JButton sendTextButton,sendFileButton;
private JTextField[] receiveFields;
private static int num = 8;
public static void main(String[] args) {
JframeSocket js = new JframeSocket();
js.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
js.setVisible(true);
js.setSize(300,300);
js.setLocation(500, 200);
js.setAlwaysOnTop(true);
js.setTitle("聊天工具——客服端");
}
public JframeSocket(){
msg = new Message();
receive = new JPanel();
receive.setPreferredSize(new Dimension(300, 240));
receive.setBorder(new MatteBorder(1, 1, 1, 1, Color.black));
receive.setLayout(new FlowLayout(FlowLayout.LEFT, 0, 0));
receiveFields = new JTextField[num];
for(int i = 0; i < num; i++){
receiveFields[i] = new JTextField();
receiveFields[i].setPreferredSize(new Dimension(300,240/num));
receiveFields[i].setBorder(null);
receiveFields[i].setEditable(false);
receiveFields[i].setText("");
receiveFields[i].setBackground(Color.WHITE);
receive.add(receiveFields[i]);
}
sendText = new JTextField();
sendText.setPreferredSize(new Dimension(170,60));
sendTextButton = new JButton("发送");
sendTextButton.setPreferredSize(new Dimension(40,60));
sendFileButton = new JButton("文件");
sendTextButton.setPreferredSize(new Dimension(40,60));
send = new JPanel();
send.setPreferredSize(new Dimension(300, 60));
send.setBorder(new MatteBorder(1, 1, 1, 1, Color.black));
send.setLayout(new BorderLayout());
send.add(sendText,BorderLayout.WEST);
send.add(sendTextButton,BorderLayout.CENTER);
send.add(sendFileButton,BorderLayout.EAST);
getContentPane().setLayout(new BorderLayout());
getContentPane().add(receive, BorderLayout.NORTH);
getContentPane().add(send, BorderLayout.CENTER);
sendTextButton.addActionListener(this);
sendText.addKeyListener(this);
sendFileButton.addActionListener(this);
MessageThread mt = new MessageThread(msg,receiveFields);
mt.start();
}
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource() == sendTextButton){
String str = sendText.getText();
msg.setContent(str);
sendText.setText("");
display(str, receiveFields);
}
else if(e.getSource() == sendFileButton){
this.setAlwaysOnTop(false);
JFileChooser jfc = new JFileChooser();
jfc.setDialogTitle("请选择文件");
int returnVal = jfc.showOpenDialog(null);
if(returnVal == JFileChooser.APPROVE_OPTION){
this.setAlwaysOnTop(true);
msg.setFilePath(jfc.getSelectedFile().getAbsolutePath());
msg.setContent("/file/");
}
}
}
public void display(String str,JTextField[] jtfs){
for (int i = 0; i < jtfs.length - 1; i++) {
jtfs[i].setText(jtfs[i+1].getText());
}
jtfs[jtfs.length - 1].setText(" 我:" + str);
}
@Override
public void keyPressed(KeyEvent e) {
if(e.getKeyCode() == KeyEvent.VK_ENTER){
if(e.getSource() == sendText)
sendTextButton.doClick();
}
}
@Override
public void keyReleased(KeyEvent e) {
// TODO Auto-generated method stub
}
@Override
public void keyTyped(KeyEvent e) {
// TODO Auto-generated method stub
}
}