package MyFrame; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Font; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.FileFilter; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.OutputStream; import java.net.InetAddress; import java.net.ServerSocket; import java.net.Socket; import java.net.UnknownHostException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; import javax.swing.BorderFactory; import javax.swing.JButton; import javax.swing.JComboBox; import javax.swing.JFileChooser; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTextArea; import javax.swing.JTextField; import FileTran.FileClient; public class MyPane extends JPanel { // 默认服务器端口 private final String P = "9527"; // //////////////////////////////// private JTextField msgjt; private JComboBox ipjt; private JTextField portjt; private JButton clearjb; private JButton sendjb; private JButton exitjb; private JButton filejb; private JTextArea contendjt; private JScrollPane scrolljs; private Myframe mf; private int n = 0; private String fport = "9527"; public MyPane(Myframe mf) { this.mf = mf; this.setBackground(Color.lightGray); // this.setBounds(0, 0, 600, 400); this.addContend(); } private void addContend() { // TODO Auto-generated method stub this.setLayout(null); // 端口 this.portjt = new JTextField(); this.portjt.setBounds(520, 320, 70, 30); this.portjt.setForeground(Color.RED); this.portjt.setFont(new Font("宋体", Font.PLAIN, 25)); this.portjt.setText("9527"); this.add(this.portjt); // 输入框 this.msgjt = new JTextField(); this.msgjt.setBounds(10, 320, 250, 30); this.msgjt.setFont(new Font("宋体", Font.PLAIN, 20)); this.msgjt.setForeground(Color.BLUE); this.add(this.msgjt); // 文件发送按钮 this.filejb = new JButton("文件发送"); this.filejb.setBounds(505, 200, 90, 30); this.add(this.filejb); this.filejb.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { new FileClient(mf).start(); } }); // 发送按钮 this.sendjb = new JButton("发送"); this.sendjb.setBounds(270, 320, 60, 30); this.add(this.sendjb); this.sendjb.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { // TODO Auto-generated method stub String msg = mf.getPane().getMsgjt().getText(); String port = mf.getPane().getPortjt().getText(); String nowip = (String) mf.getPane().getIpjt() .getSelectedItem(); if (msg.equals("")) { JOptionPane.showMessageDialog(mf, "内容不能为空!"); // 目标端口是否改变 if (!(port.equals(fport))) { JOptionPane.showMessageDialog(mf, "正在向服务器发送端口..."); new Client("客户端&端口改为:" + port, P, mf.getMyip()); fport = mf.getPane().getPortjt().getText(); } // 获取目标电脑IP else if (n == 0) { String myip = null; InetAddress myComputer = null; try { myComputer = InetAddress.getLocalHost(); // 取得主机位置对象 myip = myComputer.getHostAddress(); // this.getPane().getContendjt().setText("目标用户IP:"+this.ip); // port=mf.getPane().getPortjt().getText(); JOptionPane .showMessageDialog(mf, "正在向服务器发送测试消息..."); new Client("客户端&端口:" + port + " (测试 )", P, mf .getMyip()); fport = mf.getPane().getPortjt().getText(); n = 1; return; } catch (UnknownHostException e) { myip = "暂时无法获取该用户IP"; // String port=mf.getPane().getPortjt().getText(); new Client(myip + "端口为 :" + port, port, mf .getMyip()); fport = mf.getPane().getPortjt().getText(); } n = 1; } return; } else if (!nowip .matches("([0-9]{1,2}|1[0-9]{2}|2[0-4][0-9]|25[0-5])[.]" + "([0-9]{1,2}|1[0-9]{2}|2[0-4][0-9]|25[0-5])[.]" + "([0-9]{1,2}|1[0-9]{2}|2[0-4][0-9]|25[0-5])[.]" + "([0-9]{1,2}|1[0-9]{2}|2[0-4][0-9]|25[0-5])")) { JOptionPane.showMessageDialog(mf, "IP不符合规范请确认...."); } else { new Client(mf); if (!mf.getPane().getMsgjt().getText().equals("")) { // System.out.println(mf.getPane().getContendjt().getText()); mf.getPane() .getContendjt() .setText("我说: "+ msg+ " ("+ new SimpleDateFormat("MM-dd HH:mm:ss").format(new Date()) + ")\n"+ mf.getPane().getContendjt().getText()); } fport = mf.getPane().getPortjt().getText(); } mf.getPane().getMsgjt().setText(""); } }); // ip地址 this.ipjt = new JComboBox(); this.ipjt.setBounds(340, 320, 170, 30); this.ipjt.setEditable(true); this.ipjt.setFont(new Font("宋体", Font.PLAIN, 22)); this.ipjt.setForeground(Color.RED); this.ipjt.addItem("127.0.0.1"); this.ipjt.addItem(mf.getMyip()); this.add(this.ipjt); // 清屏按钮 this.clearjb = new JButton("清屏"); this.clearjb.setBounds(510, 100, 60, 30); this.add(this.clearjb); this.clearjb.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { // TODO Auto-generated method stub mf.getPane().getContendjt().setText(""); } }); // 退出按钮 this.exitjb = new JButton("退出"); this.exitjb.setBounds(510, 30, 60, 30); this.add(this.exitjb); this.exitjb.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { // TODO Auto-generated method stub System.exit(0); } }); // 内容栏 this.contendjt = new JTextArea(); this.contendjt.setFont(new Font("宋体", Font.PLAIN, 20)); this.contendjt.setBorder(BorderFactory.createLineBorder(Color.BLACK)); this.contendjt.setEditable(false); this.scrolljs = new JScrollPane(this.contendjt); this.scrolljs.setBounds(0, 0, 500, 300); this.add(this.scrolljs); } public JTextField getMsgjt() { return msgjt; } public void setMsgjt(JTextField msgjt) { this.msgjt = msgjt; } public JComboBox getIpjt() { return ipjt; } public void setIpjt(JComboBox ipjt) { this.ipjt = ipjt; } public JTextField getPortjt() { return portjt; } public void setPortjt(JTextField portjt) { this.portjt = portjt; } public JTextArea getContendjt() { return contendjt; } public void setContendjt(JTextArea contendjt) { this.contendjt = contendjt; } } //源代码片段来自云代码http://yuncode.net