我的聊天/文件传输软件代码(----主窗口代码)

/**
 * 聊天主窗口
 
*/

package  mychat;
import  java.awt. * ;
import  java.awt.event. * ;
import  javax.swing. * ;
import  javax.swing.UIManager;
import  javax.swing.border.TitledBorder;
import  chatsocket. * ;
import  filetrans. * ;
import  java.net. * ;
import  java.util. * ;
import  friendIP. * ;
import  java.io. * ;
import  popumenu. * ;
public   class  MyChatFrame  extends  JFrame {
    
    
private int height=Toolkit.getDefaultToolkit().getScreenSize().height;
    
private int widht=Toolkit.getDefaultToolkit().getScreenSize().width;
    
private JMenuBar menubar;
    
private JMenu menu1;
    
private JMenu menu2;
    
private JMenu menu3;
    
private JMenu helpMenu;
    
private JMenuItem menuItem1;
    
private JMenuItem menuItem2;
    
private JMenuItem menuItem3;
    
private JMenuItem menuItem4;
    
private JMenuItem menuItem5;
    
private JMenuItem helpMenuItem;
    
private JTextArea area1;
    
private JTextArea area2;    
    
private JScrollPane scroll1;
    
private JScrollPane scroll2;
    
private JLabel label1;
    
private JLabel label2;
    
private JLabel label3;
    
private JLabel label4;
    
private JLabel label5;
    
private JLabel label6;
    
private JTextField textField1;
    
private static JTextField textField2;
    
private JTextField textField3;
    
private JButton button1;
    
private JButton button2;
    
private Container contentPane;
    
private TitledBorder titledBorder1;
    
private TitledBorder titledBorder2;
    
private TitledBorder titledBorder3;
    
private TitledBorder titledBorder4;
    
private TitledBorder titledBorder5;
    
private TitledBorder titledBorder6;
    
private TitledBorder titledBorder7;
    
private TitledBorder titledBorder8;
    
private JPanel panel;
    
private JPanel panel1;
    
private JPanel panel2;
    
private JPanel panel3;
    
private JPanel panel4;
    
private FriendIP friend;
    
private Popupmenu pop1=null;
    
private Popupmenu pop2=null;
    
private Popupmenu pop3=null;
    
private Popupmenu pop11=null;
    
private Popupmenu pop12=null;
    
private Popupmenu pop13=null;
            
    
private ChatSendSocket sendSocket;
    
private ChatReceiveSocket receiveSocket;
    
/**
     * 构造函数
     
*/

    
public MyChatFrame(){        
        jbInit();
    }

    
/**
     * 菜单,各种组件初始化
     
*/

    
public void jbInit(){    
        friend
=null;    
        menubar
=new JMenuBar();    
        menu1
=new JMenu("文件(F)");
        menu1.setMnemonic(KeyEvent.VK_F);
        menuItem1
=new JMenuItem("退出(X)");
        menuItem1.setMnemonic(KeyEvent.VK_X);        
        menuItem1.addActionListener(
new ActionListener(){
            
public void actionPerformed(ActionEvent e){
                System.exit(
0);
            }

        }
);
        menu1.add(menuItem1);
        
        menu2
=new JMenu("好友(Q)");
        menu2.setMnemonic(KeyEvent.VK_Q);
        menuItem2
=new JMenuItem("我的好友(M)");
        menuItem2.setMnemonic(KeyEvent.VK_M);
        menuItem2.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_M,InputEvent.CTRL_MASK));
        
/**
         *好友菜单处理事件
         
*/

        menuItem2.addActionListener(
new ActionListener(){
            
public void actionPerformed(ActionEvent e){
                friend
=new FriendIP();
                friend.setVisible(
true);
                friend.validate();
            }

        }
);    
        menu2.add(menuItem2);
            
        menu3
=new JMenu("传送(W)");
        menu3.setMnemonic(KeyEvent.VK_W);
        menuItem3
=new JMenuItem("传送文件(B)");
        menuItem3.setMnemonic(KeyEvent.VK_B);
        menuItem3.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_B,InputEvent.CTRL_MASK));
        
/**
         *文件菜单处理事件
         
*/

        menuItem3.addActionListener(
new ActionListener(){
            
public void actionPerformed(ActionEvent e){
                String st
=getFriendIP();
                FileTransFrame frame
=new FileTransFrame(st);
            }

        }
);
        menu3.add(menuItem3);    
        
        helpMenu
=new JMenu("帮助(H)");
        helpMenu.setMnemonic(KeyEvent.VK_H);        
        helpMenuItem
=new JMenuItem("帮助主题(H)");
        helpMenuItem.setMnemonic(KeyEvent.VK_H);
        helpMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_H,InputEvent.CTRL_MASK));
        helpMenuItem.addActionListener(
new ActionListener(){
            
public void actionPerformed(ActionEvent eee){
                    JOptionPane.showMessageDialog(
null,"作者:李海峰时间:4/13/2008","我的聊天工具",JOptionPane.INFORMATION_MESSAGE);
            }

        }
);
        helpMenu.add(helpMenuItem);
        
        menubar.add(menu1);
        menubar.add(menu2);
        menubar.add(menu3);
        menubar.add(helpMenu);
        
        
        area1
=new JTextArea(5,10);
        area1.setEnabled(
false);    
        area1.setLineWrap(
true);
        Font font1
=new Font("宋体",Font.PLAIN,14);
           Color color
=new Color(255,0,0);
           area1.setFont(font1);
           area1.setForeground(color);
           pop1
=new Popupmenu(area1);
           pop1.addTextMenu();
           area1.setComponentPopupMenu(pop1);
;        
        scroll1
=new JScrollPane(area1);
        area2
=new JTextArea(3,10);
        area2.setLineWrap(
true);
        scroll2
=new JScrollPane(area2);
        pop2
=new Popupmenu(area2);
           pop2.addTextMenu();
           area2.setComponentPopupMenu(pop2);
                                
        Image image1
=Toolkit.getDefaultToolkit().createImage("picture/fengjing.jpg");
        ImageIcon icon
=new ImageIcon(image1);
        label5
=new JLabel(icon);
        
        Image image2
=Toolkit.getDefaultToolkit().createImage("picture/hai.jpg");
        ImageIcon icon1
=new ImageIcon(image2);
        label6
=new JLabel(icon1);
                                
        label1
=new JLabel("用户名");
        label2
=new JLabel("对方IP");
        label3
=new JLabel("本机IP");
        label4
=new JLabel("         欢乐每一天       ");
        label4.setBackground(Color.black);
        textField1
=new JTextField();
        textField2
=new JTextField();
        textField3
=new JTextField();
        
        button1
=new JButton("发送");
        button1.addActionListener(
new ActionListener(){
            
public void actionPerformed(ActionEvent e){
                    String st
=textField2.getText().trim();
                
char[] ch=new char[15];
                st.getChars(
0,st.length(),ch,0);
                
int i=0;            
                
while(i<st.length()){
                    
if(!Character.isDigit(ch[i])&&ch[i]!='.'{
                        JOptionPane.showMessageDialog(
null,"IP必须都为数字或者是正确的IP"."分割符","错误提示",JOptionPane.WARNING_MESSAGE);
                        
break;
                    }

                    i
++;
                }

                String st1[] 
=st.split("/.");
                
if(st1.length!=4){
                    JOptionPane.showMessageDialog(
null,"请输入正确的IP地址格式为: XXX.XXX.XXX.XXX","错误IP",JOptionPane.WARNING_MESSAGE);
                }

                
else if(Integer.parseInt(st1[0])<0||Integer.parseInt(st1[0])>223||Integer.parseInt(st1[1])<0||Integer.parseInt(st1[1])>255
                                              
||Integer.parseInt(st1[2])<0||Integer.parseInt(st1[2])>255||Integer.parseInt(st1[3])<0||Integer.parseInt(st1[3])>255)
                      JOptionPane.showMessageDialog(
null,"输入的IP超出了应有的范围请确保每位IP在(0,255)范围内,第一位在(0,223)内","错误IP",JOptionPane.WARNING_MESSAGE);             
                            
                String username
=getUserName();
                String friendIP
=getFriendIP();
                String chatArea
=getChatArea();    
                String hostIP
=getHostIP();                            
                sendSocket
=new ChatSendSocket(username,friendIP,chatArea,hostIP);
                sendSocket.start();sendSocket.yield();
                area2.setText(
"");
                String str
=sendSocket.getSendMessage();    
                String str1
=getArea1()+" "+str;                                        
            }

        }
);
        button2
=new JButton("清空");
        button2.addActionListener(
new ActionListener(){
            
public void actionPerformed(ActionEvent e){
                area2.setText(
"");
            }

            
        }
);
        
        titledBorder1
=new TitledBorder("");
        titledBorder2
=new TitledBorder("");
        titledBorder3
=new TitledBorder("");
        titledBorder4
=new TitledBorder("");
        titledBorder5
=new TitledBorder("");
        titledBorder6
=new TitledBorder("");
        titledBorder7
=new TitledBorder("");
        titledBorder8
=new TitledBorder("");
        
        panel
=new JPanel();
        panel.setBackground(Color.PINK);
        panel1
=new JPanel();
        panel1.setBackground(Color.lightGray);
        panel2
=new JPanel();
        panel2.setBackground(Color.MAGENTA);
        panel3
=new JPanel();
        panel3.setBackground(Color.MAGENTA);
        panel4
=new JPanel();
        panel4.setBackground(Color.MAGENTA);
        
        
        contentPane
=this.getContentPane();
        
this.setTitle("聊天/文件传输");
        
this.setJMenuBar(menubar);
        
this.setSize(513,460);
        
this.setResizable(false);
        
this.setLocation(widht/4,height/4);
        
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        
        contentPane.setLayout(
null);
                
        scroll1.setBounds(
new Rectangle(8,0,282,200));
        scroll1.setBorder(titledBorder3);
        label1.setBounds(
new Rectangle(8,200,60,30));
        label1.setBorder(titledBorder8);
        textField1.setBounds(
new Rectangle(68,200,222,30));
        textField1.setBorder(titledBorder8);
        textField1.setToolTipText(
"我的用户名");
        pop11
=new Popupmenu(textField1);
           pop11.addFieldMenu();
           textField1.setComponentPopupMenu(pop11);
        
        label2.setBounds(
new Rectangle(8,230,60,30));
        label2.setBorder(titledBorder8);
        
        textField2.setBounds(
new Rectangle(68,230,222,30));        
        textField2.setBorder(titledBorder8);
        textField2.setToolTipText(
"朋友的IP地址");
        pop12
=new Popupmenu(textField2);
           pop12.addFieldMenu();
           textField2.setComponentPopupMenu(pop12);
           
/**
         * 验证输入的IP是否正确,符合规矩
        
*/

        textField2.addActionListener(
new ActionListener(){
            
public void actionPerformed(ActionEvent e){
                String st
=textField2.getText().trim();
                
char[] ch=new char[15];
                st.getChars(
0,st.length(),ch,0);
                
int i=0;            
                
while(i<st.length()){
                    
if(!Character.isDigit(ch[i])&&ch[i]!='.'{
                        JOptionPane.showMessageDialog(
null,"IP必须都为数字或者是正确的IP"."分割符","错误提示",JOptionPane.WARNING_MESSAGE);
                        
break;
                    }

                    i
++;
                }

                String st1[] 
=st.split("/.");
                
if(st1.length!=4){
                    JOptionPane.showMessageDialog(
null,"请输入正确的IP地址格式为: XXX.XXX.XXX.XXX","错误IP",JOptionPane.WARNING_MESSAGE);
                }

                
else if(Integer.parseInt(st1[0])<0||Integer.parseInt(st1[0])>223||Integer.parseInt(st1[1])<0||Integer.parseInt(st1[1])>255
                                              
||Integer.parseInt(st1[2])<0||Integer.parseInt(st1[2])>255||Integer.parseInt(st1[3])<0||Integer.parseInt(st1[3])>255)
                      JOptionPane.showMessageDialog(
null,"输入的IP超出了应有的范围请确保每位IP在(0,255)范围内,第一位在(0,223)内","错误IP",JOptionPane.WARNING_MESSAGE);                        
            }

        }
);
        
        scroll2.setBounds(
new Rectangle(8,260,282,100));
        scroll2.setBorder(titledBorder4);
        button1.setBorder(titledBorder1);
        button1.setBounds(
new Rectangle(60,365,70,30));
        button1.setToolTipText(
"发送信息给朋友");
        button2.setBorder(titledBorder2);
        button2.setBounds(
new Rectangle(170,365,70,30));
        button2.setToolTipText(
"清空输入文本框的内容");
        
        label3.setBounds(
new Rectangle(300,0,60,30));
        label3.setBorder(titledBorder8);
        textField3.setBounds(
new Rectangle(360,0,140,30));
        textField3.setBorder(titledBorder8);
        textField3.setEditable(
false);
        textField3.setToolTipText(
"本机的IP地址");
        pop13
=new Popupmenu(textField3);
           pop13.addFieldMenu();
           textField3.setComponentPopupMenu(pop13);        
        
        label5.setBounds(
new Rectangle(300,30,200,170));
        label5.setBorder(titledBorder5);
        
        label4.setBounds(
new Rectangle(300,200,200,30));
        label4.setBorder(titledBorder6);
            
        label6.setBounds(
new Rectangle(300,230,200,170));
        label6.setBorder(titledBorder7);
        panel1.setBounds(
new Rectangle(290,0,10,400));
        panel2.setBounds(
new Rectangle(0,0,5,455));
        panel3.setBounds(
new Rectangle(0,400,500,5));
        panel4.setBounds(
new Rectangle(500,0,5,405));
        
        Image image
=Toolkit.getDefaultToolkit().createImage("picture/goo.gif");
        
this.setIconImage(image);
        
this.contentPane.add(scroll1);
        
this.contentPane.add(scroll2);        
        
this.contentPane.add(label5);
        
this.contentPane.add(label1);
        
this.contentPane.add(label2);
        
this.contentPane.add(label3);
        
this.contentPane.add(textField1);
        
this.contentPane.add(textField2);
        
this.contentPane.add(textField3);
        
this.contentPane.add(button1);
        
this.contentPane.add(button2);
        
this.contentPane.add(label6);
        
this.contentPane.add(panel1);    
        
this.contentPane.add(label4);
        
this.contentPane.add(panel2);
        
this.contentPane.add(panel3);
        
this.contentPane.add(panel4);
        
this.setVisible(true);
        
try{    
        InetAddress add
=InetAddress.getLocalHost();
        setHostIP(add.getHostAddress());        
        }

        
catch( UnknownHostException ee){
            ee.printStackTrace();
       }

        
    }

    
/**
     * 获得自己的用户名
     
*/

    
public String getUserName(){
        String s2
="your_friend";
        String t1
= textField1.getText().trim();
        
if(t1.length()==0return s2;
        
else return t1;
    }

    
/**
     * 获得输入朋友的IP,并且对系统存储的朋友IP进行
     *比较,如果有就不做任何处理,没有就增加到里面!
     *调用的是FriendIP这个类的成员函数!
     
*/

    
public String getFriendIP(){
        String st
=textField2.getText().trim();
        
if(friend!=null){
            ArrayList
<String> array=friend.getData();    
            
int m=0;                
            
for(m=0;m<array.size();m++){
               
if(array.get(m).trim().equals(st)) {         
                    
break;
               }
               
           }

           
if(m==array.size()) {
               array.add(st);
               friend.setData(array);
           }

           
else friend.setData(array);    
        }

        
else{
            friend
=new FriendIP();
            ArrayList
<String> array1=friend.getData();    
            
int m=0;                
            
for(m=0;m<array1.size();m++){
               
if(array1.get(m).trim().equals(st)) {                    
                    
break;
               }

           }

            
if(m==array1.size()) {
                   array1.add(st);
                   friend.setData(array1);
           }

           
else friend.setData(array1);            
            
        }

        
return st;
        
    }

    
/**
     * 输入朋友的IP
     
*/

    
public static void setFriendIP(String str){
        textField2.setText(str.trim());
    }

    
/**
     * 获得输入的聊天信息
     
*/

    
public String getChatArea(){
        
return area2.getText();
    }

    
/**
     * 获得本机的IP
     
*/

    
public String getHostIP(){
        
return textField3.getText().trim();
    }

    
/**
     * 设定本机的IP到窗口主机IP对应的位置
     
*/

    
public void setHostIP(String ip){
        textField3.setText(ip);
    }

    
/**
     * 获得输入过的信息
     
*/

    
public String getArea1(){
        
return area1.getText();
    }

    
/**
     * 处理输入过的信息
     
*/

    
public void setArea1(String st){
         area1.setText(st);
    }


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值