📄 mainframe.java
字号:
import java.io.*;
import java.awt.*;
import javax.swing.*;
import java.util.*;
import java.awt.event.*;
import java.net.*;
public class MainFrame extends JFrame implements Runnable
{
private JLabel viewFriendButton=new JLabel("我的好友");
private JButton findFriendButton=new JButton("查找");
private JButton offLineButton=new JButton("隐身");
private JButton onLineButton=new JButton("上线");
private JButton deleteButton=new JButton("退出");
private JPanel panel1=new JPanel();
private JPanel panel2=new JPanel();
private JPanel panel3=new JPanel();
private JPanel panel4=new JPanel();
private JPanel panel5=new JPanel();
private JPanel panel6=new JPanel();
private Vector newVector=new Vector();
private Vector ipVector=new Vector();
private Vector nameVector=new Vector();
private Vector qqnoVector=new Vector();
private JScrollPane aJScrollPane=new JScrollPane();
private String servername;
private String serverport;
private String yourqqno;
private Socket socket;
private BufferedReader in;
private PrintWriter out;
private DefaultListModel newListModel=new DefaultListModel();
private JList newJList=new JList();;
private Person newPerson;
private JPopupMenu menu=new JPopupMenu();
private JMenuItem sendmessage=new JMenuItem("发送消息");
private JMenuItem lookinfo=new JMenuItem("查看信息");
private JMenuItem deletefriend=new JMenuItem("删除好友");
private DatagramPacket sendPacket,receivePacket;
private DatagramSocket sendSocket,receiveSocket;
private int udpPort=5000;
// private int sendPort=5001;
private String received;
private byte array[]=new byte[512];
private SendMessage newSendMessage;
Thread thread;
private String yourname;
//现在是在单击调试,所以需要两个端口,一个用户用5001来接收,另一个用户用5000来接收,所以在此发送的目标为5000
//现在是在单击调试,所以需要两个端口,一个用户用5001来接收,另一个用户用5000来接收,所以在此发送的目标为5000
//现在是在单击调试,所以需要两个端口,一个用户用5001来接收,另一个用户用5000来接收,所以在此发送的目标为5000
public MainFrame(String s1,String s4,String s2,String s3)
{
yourqqno=s1;
yourname=s4;
servername=s2;
serverport=s3;
ConnectServer(servername,serverport);
newVector=FindMyFriend(yourqqno);
jbInit(newVector);
CreatUDP();
newSendMessage=new SendMessage(sendSocket,receiveSocket,udpPort);
newSendMessage.setVisible(false);
onLine();
thread=new Thread(this);
thread.start();
}
private void jbInit(Vector v)
{
this.setTitle(yourname+yourqqno);
this.setBounds(100,100,200,500);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
Vector aVector=new Vector();
aVector=v;
Container c=this.getContentPane();
c.setLayout(new BorderLayout());
panel1.setLayout(new BorderLayout());
panel1.add(viewFriendButton,BorderLayout.WEST);
aJScrollPane.getViewport().add(newJList,null);
for(int i=0;i<aVector.size();i++)
{
newPerson=(Person) aVector.elementAt(i);
// newListModel.addElement(new Object[ ]{new ImageIcon(newPerson.getPic()),newPerson.getNickname()+" "+newPerson.getStatus()+newPerson.getIp()});
newListModel.addElement(new Object[ ]{new ImageIcon(newPerson.getPic()),newPerson.getNickname()+" "+newPerson.getStatus()});
}
newJList.setVisibleRowCount(5);
newJList.setModel(newListModel);
newJList.setCellRenderer(new Render());
// newListModel.addElement(new Object[ ]{new ImageIcon("C:/Program Files/Java/jdk1.5.0_06/java新程序/fwgQQ/picture/3.jpg"),"414206204"});
panel1.add(aJScrollPane,BorderLayout.CENTER);
panel1.setBorder(BorderFactory.createLineBorder(Color.black));
c.add(panel1,BorderLayout.CENTER);
panel2.setLayout(new GridLayout(2,2));
panel2.setBorder(BorderFactory.createLineBorder(Color.black));
panel3.add(findFriendButton);
panel2.add(panel3);
panel4.add(onLineButton);
panel2.add(panel4);
panel5.add(offLineButton);
panel2.add(panel5);
panel6.add(deleteButton);
panel2.add(panel6);
c.add(panel2,BorderLayout.SOUTH);
menu.add(sendmessage);
menu.add(lookinfo);
menu.add(deletefriend);
sendmessage.addMouseListener(new java.awt.event.MouseAdapter() {
public void mousePressed(MouseEvent e) {
sendmessage_mousePressed(e);
}
});
lookinfo.addMouseListener(new java.awt.event.MouseAdapter() {
public void mousePressed(MouseEvent e) {
lookinfo_mousePressed(e);
}
});
deletefriend.addMouseListener(new java.awt.event.MouseAdapter() {
public void mousePressed(MouseEvent e) {
deletefriend_mousePressed(e);
}
});
newJList.addMouseListener(new java.awt.event.MouseAdapter() {
public void mousePressed(MouseEvent e)
{
aJList_mousePressed(e);
}
});
c.validate();
this.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent event)
{
dispose();
}
}
);
findFriendButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e) {
findFriendButton_actionperformed(e);
}
});
onLineButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e) {
onLineButton_actionperformed(e);
}
});
offLineButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e) {
offLineButton_actionperformed(e);
}
});
deleteButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e) {
deleteButton_actionperformed(e);
}
});
}
void findFriendButton_actionperformed(ActionEvent e)
{
FindQuestion a=new FindQuestion(yourqqno,in,out);
}
void onLineButton_actionperformed(ActionEvent e)
{
out.println("express_me");
out.println(yourqqno);
String answer="";
try {
answer=in.readLine().trim();
} catch (IOException ex) {
ex.printStackTrace();
}
if(answer.equals("express_me_false"))
JOptionPane.showMessageDialog(this,"上线失败!","ok",JOptionPane.INFORMATION_MESSAGE);
if(answer.equals("express_me_succeed"))
{
JOptionPane.showMessageDialog(this,"上线成功!","ok",JOptionPane.INFORMATION_MESSAGE);
onLine();
}
}
void offLineButton_actionperformed(ActionEvent e)
{
out.println("hide_me");
out.println(yourqqno);
String answer="";
try {
answer=in.readLine().trim();
} catch (IOException ex) {
ex.printStackTrace();
}
if(answer.equals("hide_me_false"))
JOptionPane.showMessageDialog(this,"隐身失败!","ok",JOptionPane.INFORMATION_MESSAGE);
if(answer.equals("hide_me_succeed"))
JOptionPane.showMessageDialog(this,"隐身成功!","ok",JOptionPane.INFORMATION_MESSAGE);
}
void deleteButton_actionperformed(ActionEvent e)
{
out.println("logout");
out.println(yourqqno);
String answer="";
try {
answer=in.readLine().trim();
} catch (IOException ex) {
ex.printStackTrace();
}
if(answer.equals("logout_false"))
JOptionPane.showMessageDialog(this,"下线失败,可能为数据库访问的问题!","ok",JOptionPane.INFORMATION_MESSAGE);
if(answer.equals("logout_succeed"))
{
offLine();
this.dispose();
System.exit(0);
}
}
void aJList_mousePressed(MouseEvent e)
{
menu.show(this,e.getX()+90,e.getY()-40);
}
void lookinfo_mousePressed(MouseEvent e)
{
Person Person1=(Person) newVector.elementAt(newJList.getSelectedIndex());
ViewInfo a=new ViewInfo(Person1);
}
void deletefriend_mousePressed(MouseEvent e)
{
String hisip;
String s="onedeleteyou "+yourqqno;
byte[] data=s.getBytes();
System.out.println(s);
Person Person2=(Person) newVector.elementAt(newJList.getSelectedIndex());
hisip=Person2.getIp();
out.println("delete_friend");
out.println(yourqqno);
out.println(Person2.getQqno());
String answer="";
try {
answer=in.readLine().trim();
} catch (IOException ex) {
ex.printStackTrace();
}
if(answer.equals("delete_friend_false"))
JOptionPane.showMessageDialog(this,"删除好友失败!","ok",JOptionPane.INFORMATION_MESSAGE);
if(answer.equals("delete_friend_ok"))
{
JOptionPane.showMessageDialog(this,"删除好友成功!","ok",JOptionPane.INFORMATION_MESSAGE);
flushMyFriend();
try
{
sendPacket=new DatagramPacket(data,s.length(),InetAddress.getByName(hisip),udpPort);
sendSocket.send(sendPacket);
}
catch (UnknownHostException ex1)
{
ex1.printStackTrace();
}
catch (IOException ex2)
{
ex2.printStackTrace();
}
}
}
void sendmessage_mousePressed(MouseEvent e)
{
Person Person3=(Person) newVector.elementAt(newJList.getSelectedIndex());
if(!Person3.getIp().equals("未知"))
{
newSendMessage.setItsName(Person3.getNickname());
newSendMessage.setItsIp(Person3.getIp());
newSendMessage.setMyName(yourname);
newSendMessage.setVisible(true);
}
else
JOptionPane.showMessageDialog(this,"对方不在线,无法得到其IP地址!","ok",JOptionPane.INFORMATION_MESSAGE);
}
public void ConnectServer(String s1,String s2)
{
String aservername=s1;
String aserverport=s2;
try
{
socket=new Socket(InetAddress.getByName(aservername),Integer.parseInt(aserverport));
in=new BufferedReader(new InputStreamReader(socket.getInputStream()));
out=new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())),true);
}catch(IOException eee)
{
System.out.println("网络连接出现问题");
}
}
public Vector FindMyFriend(String s)
{
Vector aVector=new Vector();
Person aPerson;
String myqqno=s;
String s1="";
String s2="";
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -