📄 qqstate.java
字号:
//状态浮动图标
package myQQ;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
class QQState extends JWindow implements ActionListener
{
QQMainFrame mainF;
//控制显示位置
Adom place = new Adom();
Point p;
//状态图标--以按钮做载体
ImageIcon[] ic = new ImageIcon[4];
JButton jb = new JButton();
//浮动菜单
JPopupMenu pMenu = new JPopupMenu();
JMenuItem[] me = new JMenuItem[4];
String[] sme = {"上线","隐身","离开","下线"};
ImageIcon[] icme = new ImageIcon[4];
//编号
String id;
//状态数组
int[] state = {0,2,3,-1};
//连接线程是否终止
boolean stop = false;
QQState(QQMainFrame mf)
{ //传入主界面以控制其显示
this.setSize(50,50);
this.mainF = mf;
this.id = mainF.id;
p = mainF.getLocation();
p.x -= 50;
this.setLocation(p);
for (int i = 0; i<ic.length; i++)
{ //初始化图标
ic[i] = new ImageIcon("QQ/state/"+i+".png");
icme[i] = new ImageIcon("QQ/state/m"+i+".png");
}
for (int i = 0; i<me.length; i++)
{
me[i] = new JMenuItem(sme[i]+" ",icme[i]);
pMenu.add(me[i]);
me[i].addActionListener(this);
}
Container c = this.getContentPane();
c.add(jb);
jb.setIcon(ic[0]);
//注册鼠标事件
jb.addMouseListener(new ME());
mainF.addMouseListener(new ME());
mainF.jp.addMouseListener(new ME());
mainF.jb.addMouseListener(new ME());
// this.setAlwaysOnTop(true); 1.4JDK不支持
this.setVisible(true);
}
class ME extends MouseAdapter
{ //鼠标事件
public void mouseEntered(MouseEvent e)
{ //进入状态图标时显示主界面
mainF.setVisible(true);
p = mainF.getLocation();
p.x -= 50;
setLocation(p);
}
public void mouseExited(MouseEvent e)
{
if(e.getSource().equals(mainF))
{ //鼠标离开主界面时将其隐藏
mainF.setVisible(false);
p = place.setRight(getSize());
setLocation(p);
}
}
public void mouseReleased(MouseEvent e)
{ //弹出浮动菜单
if(e.getSource().equals(jb))
{
pMenu.show(e.getComponent(),e.getX(),e.getY());
}
}
}
public void actionPerformed(ActionEvent e)
{ //浮动菜单选择事件
for (int i = 0; i<me.length; i++)
{
if(e.getSource().equals(me[i]))
{ //改变状态图标
if(!jb.getIcon().equals(ic[i]))
{ //状态改变才发送信息至服务器
jb.setIcon(ic[i]);
if(i==0&&stop)
{
mainF.client = new QQClient();
mainF.client.start();
stop = false;
me[1].setEnabled(true);
me[2].setEnabled(true);
}
MessType mt = new MessType(id,mainF.sTime,state[i]);
mainF.client.sendMess(mt);
if(i==3)
{
mainF.client.stopClient();
mainF.client = null;
stop = true;
me[1].setEnabled(false);
me[2].setEnabled(false);
}
}
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -