我的聊天/文件传输软件代码(----主窗口代码)
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);
}
}
相关文章推荐
- 我的聊天/文件传输软件代码(----FileChooser代码)
- 我的聊天/文件传输软件代码(----MyFilefilter代码)
- 我的聊天/文件传输软件代码(----Popupmenu代码)
- 我的聊天/文件传输软件代码(----FriendIP代码)
- 我的聊天/文件传输软件代码(----TransServerSocket代码)
- 我的聊天/文件传输软件代码(----main主程序)
- 我的聊天/文件传输软件代码(----FileTransFrame代码)
- 我的聊天/文件传输软件代码(----ChatReceiveSocket代码)
- 我的聊天/文件传输软件代码(----TransClientSocket代码)
- 我的聊天/文件传输软件代码(----ChatSendSocket代码)
- 小白基于Csocket的局域网聊天文件传输软件C/S模式
- C语言实现聊天工具钟的抖动窗口功能,代码很简单,思路也很简单
- Qt软件开发文档14---聊天窗口的实现,对QlistWidget点击item项隐藏虚线框的实现
- Linux 下 c 语言 聊天软件 完整代码
- Qt软件开发文档15---聊天窗口的实现(2),QTextEdit+QPainter实现聊天框自适应大小
- 首届CCF软件能力认证试题题目2:窗口(答案+代码)
- 多线程C#2.0聊天软件 内含代码
- 完整源代码详细解释——聊天、文件传输、语音呼叫,安卓版飞鸽传书软件
- 添加MSN客服代码,可显示MSN在线和不在线,自动打开MSN聊天窗口
- Qt软件开发文档15---聊天窗口的实现(2),QTextEdit+QPainter实现聊天框自适应大小