packagesockettest;importjava.io.BufferedReader;importjava.io.ByteArrayInputStream;importjava.io.ByteArrayOutputStream;importjava.io.File;importjava.io.FileInputStream;importjava.io.FileNotFoundException;importjava.io.IOException;importjava.io.InputStreamReader;importjava.io.ObjectInputStream;importjava.io.ObjectOutputStream;importjava.io.PrintWriter;importjava.net.Socket;importjava.sql.Date;importjava.util.ArrayList;importjava.util.List;importjavax.swing.JFrame;importjavax.swing.JSplitPane;importjava.awt.BorderLayout;importjava.awt.Color;importjava.awt.Dimension;importjava.awt.Image;importjava.awt.Toolkit;importjavax.swing.DefaultCellEditor;importjavax.swing.ImageIcon;importjavax.swing.JLabel;importjavax.swing.JTextField;importjavax.swing.JToolBar;importjavax.swing.JButton;importjavax.swing.JPanel;importjavax.swing.SwingUtilities;importjava.awt.event.WindowAdapter;importjava.awt.event.WindowEvent;importjava.awt.Panel;importjava.awt.event.ActionListener;importjava.awt.event.ActionEvent;importjavax.swing.JScrollPane;importjavax.swing.JTextPane;importjavax.swing.table.DefaultTableModel;importjavax.swing.text.Element;importjavax.swing.text.StyleConstants;importjavax.swing.JTable;importtest.TextAreaRenderer;public class Client extendsJFrame {public static voidmain(String[] args) {

SwingUtilities.invokeLater(newRunnable() {

@Overridepublic voidrun() {new Client().setVisible(true);

}

});

}privateJSplitPane splitPane;privateJToolBar toolBar;privateJButton btnNewButton;privateJButton btnNewButton_1;privateJPanel panel;privateJPanel panel_1;privatePanel panel_2;privatePanel panel_3;privateJButton btnNewButton_2;privateJScrollPane scrollPane;privateJButton btnNewButton_3;private Socket st = null;private PrintWriter pw = null;private BufferedReader ReaderServer = null;publicClient() {

initialize();try{

st= new Socket("127.0.0.1", 8899);

pw= newPrintWriter(st.getOutputStream());

ReaderServer= new BufferedReader(newInputStreamReader(

st.getInputStream()));

}catch(IOException e) {

e.printStackTrace();

}

initTable(new ArrayList());

}private voidinitialize() {

addWindowListener(newWindowAdapter() {

@Overridepublic voidwindowClosing(WindowEvent e) {

dispose();

}

});this.setTitle("客户端");this.setBounds(200, 200, 467, 532);

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

getContentPane().add(getToolBar(), BorderLayout.NORTH);

}privateJSplitPane getSplitPane() {if (splitPane == null) {

splitPane= newJSplitPane();

splitPane.setOrientation(JSplitPane.VERTICAL_SPLIT);

splitPane.setLeftComponent(getPanel());

splitPane.setRightComponent(getPanel_1());

splitPane.setDividerLocation(300);

splitPane.setDividerSize(3);

}returnsplitPane;

}privateJToolBar getToolBar() {if (toolBar == null) {

toolBar= newJToolBar();

toolBar.add(getBtnNewButton());

toolBar.add(getBtnNewButton_1());

}returntoolBar;

}privateJButton getBtnNewButton() {if (btnNewButton == null) {

btnNewButton= new JButton("菜单");

}returnbtnNewButton;

}privateJButton getBtnNewButton_1() {if (btnNewButton_1 == null) {

btnNewButton_1= new JButton("工具");

}returnbtnNewButton_1;

}privateJPanel getPanel() {if (panel == null) {

panel= newJPanel();

panel.setLayout(new BorderLayout(0, 0));

panel.add(getPanel_3(), BorderLayout.SOUTH);

panel.add(getScrollPane(), BorderLayout.CENTER);

panel.setBackground(Color.white);

}returnpanel;

}privateJPanel getPanel_1() {if (panel_1 == null) {

panel_1= newJPanel();

panel_1.setLayout(new BorderLayout(0, 0));

panel_1.add(getTextPane(),BorderLayout.CENTER);

panel_1.add(getPanel_2_1(), BorderLayout.SOUTH);

}returnpanel_1;

}privatePanel getPanel_2_1() {if (panel_2 == null) {

panel_2= newPanel();

panel_2.setPreferredSize(new Dimension(467, 30));

panel_2.setLayout(null);

panel_2.add(getBtnNewButton_2());

}returnpanel_2;

}privatePanel getPanel_3() {if (panel_3 == null) {

panel_3= newPanel();

panel_3.setPreferredSize(new Dimension(467, 30));

panel_3.setLayout(null);

panel_3.add(getBtnNewButton_3());

JButton btnNewButton_4= new JButton("发送图片");

btnNewButton_4.setBounds(116, 4, 93, 23);

panel_3.add(btnNewButton_4);

}returnpanel_3;

}int i = 0;privateJTable table;privateJTextPane textPane_1;privateJButton getBtnNewButton_2() {if (btnNewButton_2 == null) {

btnNewButton_2= new JButton("发送");

btnNewButton_2.addActionListener(newActionListener() {public voidactionPerformed(ActionEvent e) {

send();if (i == 0) {

i++;

Send send= newSend();

send.start();

}

}

});

btnNewButton_2.setBounds(346, 3, 93, 23);

}returnbtnNewButton_2;

}public voidsend() {try{

ByteArrayOutputStream baos= newByteArrayOutputStream();

ObjectOutputStream oos= newObjectOutputStream(baos);

String inputString=textPane_1.getText();

List list =getImgs();if (list.size() > 0) {

oos.writeObject(newMessage(inputString, list));

}else{

oos.writeObject(newMessage(inputString));

}byte[] by =baos.toByteArray();

oos.close();

baos.close();

StringBuffer sb= newStringBuffer();for (int i = 0; i < by.length; i++) {

sb.append(by[i]);

sb.append(",");

}

pw.print(sb.toString().substring(0, sb.toString().length() - 1));

pw.print("\n");

pw.flush();

}catch(IOException e) {

e.printStackTrace();

}

}public class Send extendsThread {

@Overridepublic voidrun() {super.run();try{

List list = new ArrayList();while (true) {

String clientMessage=ReaderServer.readLine();

String[] string= clientMessage.split(",");byte[] by = new byte[string.length];for (int i = 0; i < string.length; i++) {

by[i]= (byte) Integer.parseInt(string[i]);

}

ByteArrayInputStream ba= newByteArrayInputStream(by);

ObjectInputStream ois= newObjectInputStream(ba);

Message ent=(Message) ois.readObject();

list.add("");

list.add(" 服务端的信息 "

+ (newDate(System.currentTimeMillis())).toString());if ((ent.getMessageString() != null)|| !("".equals(ent.getMessageString().trim()))) {

list.add(ent.getMessageString());

}if (ent.getMessageImageIcons() != null) {

List imgList =ent.getMessageImageIcons();for (int i = 0; i < imgList.size(); i++) {

JLabel label= newJLabel();

label.setIcon(imgList.get(i));

list.add(label);

}

}

initTable(list);

}

}catch(IOException e1) {

e1.printStackTrace();

}catch(ClassNotFoundException e) {

e.printStackTrace();

}

}

}private voidclose() {try{

ReaderServer.close();

pw.close();

st.close();

}catch(IOException e) {

e.printStackTrace();

}

}privateJScrollPane getScrollPane() {if (scrollPane == null) {

scrollPane= newJScrollPane();

scrollPane.setViewportView(getTable());

scrollPane.setBackground(Color.white);

}returnscrollPane;

}privateJButton getBtnNewButton_3() {if (btnNewButton_3 == null) {

btnNewButton_3= new JButton("添加图片");

btnNewButton_3.addActionListener(newActionListener() {public voidactionPerformed(ActionEvent e) {

ImageIcon img=getImg(getbyte());

textPane_1.insertIcon(img);

}

});

btnNewButton_3.setBounds(10, 4, 93, 23);

}returnbtnNewButton_3;

}public byte[] getbyte() {byte[] by = null;try{//file = new File("./classes/test/icon.gif");//image = new ImageIcon(file.getAbsoluteFile().toString());

File file= newFile("C:\\Users\\Administrator\\Desktop\\iReport\\QQ截图20131022163001.png");

FileInputStream fis= newFileInputStream(file);

by= new byte[fis.available()];//循环读取

fis.read(by);

}catch(FileNotFoundException e) {

e.printStackTrace();

}catch(IOException e) {

e.printStackTrace();

}returnby;

}public ImageIcon getImg(byte[] by) {

Image img=Toolkit.getDefaultToolkit().createImage(by);

ImageIcon image= newImageIcon();

image.setImage(img.getScaledInstance(230, 150, Image.SCALE_DEFAULT));returnimage;

}public ListgetImgs() {

List list = new ArrayList();for (int i = 0; i < this.textPane_1.getDocument().getRootElements()[0]

.getElementCount(); i++) {

Element root= this.textPane_1.getDocument().getRootElements()[0]

.getElement(i);for (int j = 0; j < root.getElementCount(); j++) {

ImageIcon icon=(ImageIcon) StyleConstants.getIcon(root

.getElement(j).getAttributes());if (icon != null) {

list.add(icon);

}

}

}//System.out.println(list.size()+"===");

returnlist;

}privateJTable getTable() {if (table == null) {

table= newJTable();

table.setShowGrid(false);

table.setShowHorizontalLines(false);

table.setShowVerticalLines(false);

table.setSurrendersFocusOnKeystroke(false);

}returntable;

}public voidinitTable(List list) {

DefaultTableModel dtm= newDefaultTableModel();

dtm.addColumn("");

JTextField tf= newJTextField();

table.setModel(dtm);

table.getColumnModel().getColumn(0).setCellEditor(newDefaultCellEditor(tf));

table.getColumnModel().getColumn(0).setCellRenderer(newTextAreaRenderer());for (int i = 0; i < list.size(); i++) {

dtm.addRow(newObject[] { list.get(i) });

}

}privateJTextPane getTextPane() {if (textPane_1 == null) {

textPane_1= newJTextPane();

}returntextPane_1;

}

}

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐