nohand's noob 2017-08-25 09:21 采纳率: 0%
浏览 2026

java仿qq发送表情问题

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:

    *
  • @author not attributable
  • @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()); 
错误的是这一行
  • 写回答

1条回答 默认 最新

  • Hefei19881002 2017-08-25 09:34
    关注

    强制类型转换错误 建议debug或打印一下cubl.getIcon()类型

    评论

报告相同问题?

悬赏问题

  • ¥15 请问这个是什么意思?
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services
  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏
  • ¥15 模糊pid与pid仿真结果几乎一样
  • ¥15 java的GUI的运用
  • ¥15 我想付费需要AKM公司DSP开发资料及相关开发。
  • ¥15 怎么配置广告联盟瀑布流
  • ¥15 Rstudio 保存代码闪退
  • ¥20 win系统的PYQT程序生成的数据如何放入云服务器阿里云window版?