package com.qq.client.tools;
import java.awt.*;
import java.awt.event.*;
import java.awt.font.TextLayout;
import javax.swing.*;
import com.qq.client.view.*;
/**
Title:
*Description:
*Copyright: Copyright (c) 2007
*Company:
*@version 1.0
/
public class face extends JWindow {
private static final long serialVersionUID = 1L;
GridLayout gridLayout1 = new GridLayout(6,3);
JLabel[] ico=new JLabel[18];
JLabel[] icc=new JLabel[18];/放表情*/
int i;
QqChat owner;
String[] intro = {"","","","","","","","","",
"","","","","","","","",""
};/*图片描述*/
public face (QqChat owner) {
super(owner);
this.owner=owner;
try {
init();
this.setAlwaysOnTop(true);
}
catch (Exception exception) {
exception.printStackTrace();
}
}
private void init() throws Exception {
this.setPreferredSize(new Dimension(38*6,50*3));
JPanel p = new JPanel();
p.setOpaque(true);
this.setContentPane(p);
p.setLayout(gridLayout1);
p.setBackground(SystemColor.text);
String fileName = "";
for(i=0;i <ico.length;i++){
fileName= "emjio/"+ i +".png";/*修改图片路径*/
ico[i]=new JLabel(new ImageIcon(fileName));
//icc[i] =new JLabel(new ChatPic(face.class.getResource(fileName),i),SwingConstants.CENTER);
ico[i].setBorder(BorderFactory.createLineBorder(new Color(225,225,225), 1));
ico[i].setToolTipText(i+"");
ico[i].addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e){
if(e.getButton()==1){
JLabel cubl = (JLabel)(e.getSource());
ChatPic cupic = (ChatPic) (cubl.getIcon());
owner.insertSendPic(cupic);
cubl.setBorder(BorderFactory.createLineBorder(new Color(225,225,225), 1));
getObj().dispose();
}
}
@Override
public void mouseEntered(MouseEvent e) {
((JLabel)e.getSource()).setBorder(BorderFactory.createLineBorder(Color.BLUE));
}
@Override
public void mouseExited(MouseEvent e) {
((JLabel)e.getSource()).setBorder(BorderFactory.createLineBorder(new Color(225,225,225), 1));
}
});
p.add(ico[i]);
}
p.addMouseListener(new MouseAdapter(){
@Override
public void mouseExited(MouseEvent e) {
getObj().dispose();
}
});
}
@Override
public void setVisible(boolean show) {
if (show) {
determineAndSetLocation();
}
super.setVisible(show);
}
private void determineAndSetLocation() {
Point loc = owner.getPicBtn().getLocationOnScreen();/*控件相对于屏幕的位置*/
setBounds(loc.x-getPreferredSize().width/3, loc.y-getPreferredSize().height,
getPreferredSize().width, getPreferredSize().height);
}
private JWindow getObj(){
return this;
}
public static void main(String[] args){
}
}
package com.qq.client.tools;
import java.net.URL;
import javax.swing.ImageIcon;
public class ChatPic extends ImageIcon{
/**
*图片描述
*/
private static final long serialVersionUID = 1L;
int im;//图片代号
public int getIm() {
return im;
}
public void setIm(int im) {
this.im = im;
}
public ChatPic(URL url,int im){
super(url);
this.im = im;
}
public static void main(String[] args) {
// TODO 自动生成的方法存根
}
}
点击表情后提示错误
Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: javax.swing.ImageIcon cannot be cast to com.qq.client.tools.ChatPic
at com.qq.client.tools.face$1.mouseClicked(face.java:60)
ChatPic cupic = (ChatPic) (cubl.getIcon());
错误的是这一行
强制类型转换错误 建议debug或打印一下cubl.getIcon()类型