您的位置:首页 > 编程语言

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

2008-04-14 00:31 302 查看



/** *//**


* 聊天主窗口


*/


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()==0) return 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);


}




}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: