这个程序为什么会发生这种错误呢?Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: javax.swing.JPanel cannot be cast to javax.swing.JLabel
奇怪啊,我是按照教程来的,为什么教程可以我不可以呢?
难道是JDK版本问题,不应该啊~~!!!JLabel jl=(JLabel)e.getSource();这一句,是否错误的啊,不能强制转换么~~~我急谢谢各位了 O(∩_∩)O~
奇怪啊,我是按照教程来的,为什么教程可以我不可以呢?
难道是JDK版本问题,不应该啊~~!!!JLabel jl=(JLabel)e.getSource();这一句,是否错误的啊,不能强制转换么~~~我急谢谢各位了 O(∩_∩)O~
public void mouseEntered(MouseEvent arg0) {
// TODO Auto-generated method stub
JLabel jl=(JLabel)arg0.getSource();
jl.setForeground(Color.red);
}
这里不可以么?
能否说明下理由什么的呢?
System.out.println(e.getSource().getClass().getSimpleName());
THX
显示的是 JPanel
package com.qq.client.view;
/**
* 我的好友列表
*
* 更加深入理解 多线程 !!!!!
* @author Administrator
*
*/
import java.awt.*;import javax.swing.*;import java.awt.event.*;public class QQFriendList extends JFrame implements ActionListener,MouseListener {
//处理第一张卡片
JPanel jphy1,jphy2,jphy3;
JButton jphy_jb1,jphy_jb2,jphy_jb3;
JScrollPane jsp1;
//处理第二张卡片 显示陌生人
JPanel jpmsr1,jpmsr2,jpmsr3;
JButton jpmsr_jb1,jpmsr_jb2,jpmsr_jb3;
JScrollPane jsp2;
//处理第二张卡片 显示黑名单
//把整个JFrame设置成card布局
CardLayout cl;
public static void main(String[] args) {
// TODO Auto-generated method stub
QQFriendList fl=new QQFriendList();
}
public QQFriendList()
{
//处理第一张卡片(显示好友列表)
jphy_jb1=new JButton("我的好友");
jphy_jb2=new JButton("陌生人");
//设置监听
jphy_jb2.addActionListener(this);
jphy_jb3=new JButton("黑名单");
jphy1=new JPanel(new BorderLayout());
//假定有50个好友
jphy2=new JPanel(new GridLayout(50,1,4,4));
//给jphy2,初始化50个好友
JLabel []jlbs=new JLabel[50];
for(int i=0;i<jlbs.length;++i)
{
jlbs[i]=new JLabel(i+1+"",new ImageIcon("images/mm.jpg"),JLabel.LEFT);
jphy2.add(jlbs[i]);
//添加高亮效果
jphy2.addMouseListener(this);
}
jphy3=new JPanel(new GridLayout(2,1));
//把两个按钮加入到jphy3
jphy3.add(jphy_jb2);
jphy3.add(jphy_jb3);
jsp1=new JScrollPane(jphy2);
//对jphy1初始化
jphy1.add(jphy_jb1,"North");
jphy1.add(jsp1,"Center");
jphy1.add(jphy3,"South");
//处理第二张卡片(陌生人)
jpmsr_jb1=new JButton("我的好友");
jpmsr_jb1.addActionListener(this);
jpmsr_jb2=new JButton("陌生人");
jpmsr_jb3=new JButton("黑名单");
jpmsr1=new JPanel(new BorderLayout());
//假定有20个陌生人
jpmsr2=new JPanel(new GridLayout(20,1,4,4));
//给jpmsr2,初始化20个好友
JLabel []jlbs2=new JLabel[20];
for(int i=0;i<jlbs2.length;++i)
{
jlbs2[i]=new JLabel(i+1+"",new ImageIcon("images/mm.jpg"),JLabel.LEFT);
jpmsr2.add(jlbs2[i]);
//添加高亮效果
}
jpmsr3=new JPanel(new GridLayout(2,1));
//把两个按钮加入到jphy3
jpmsr3.add(jpmsr_jb1);
jpmsr3.add(jpmsr_jb2);
jsp2=new JScrollPane(jpmsr2);
//对jpmsr1初始化
jpmsr1.add(jpmsr3,"North");
jpmsr1.add(jsp2,"Center");
jpmsr1.add(jpmsr_jb3,"South");
//this.add(jphy1,"Center");
cl=new CardLayout();
this.setLayout(cl);
this.add(jphy1,"1");
this.add(jpmsr1,"2");
this.setSize(140,400);
this.setTitle("好友列表");
this.setLocation(500, 180);
this.setVisible(true);
} @Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
//如果电解了陌生人按钮,就显示第二张卡片
if(e.getSource()==jphy_jb2)
{
cl.show(this.getContentPane(), "2");
}else if(e.getSource()==jpmsr_jb1)
{
cl.show(this.getContentPane(), "1");
}
} @Override
public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub
//相应用户双击事件,并得到好友的编号
if(e.getClickCount()==2)
{
//得到该好友的编号
String friendNo=((JLabel)e.getSource()).getText();
System.out.println("你希望和"+friendNo+"聊天");
}
} @Override
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub
//添加高亮效果
//JLabel jl=(JLabel)e.getSource();
//jl.setForeground(Color.red);
} @Override
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub
//添加高亮效果
System.out.println(e.getSource().getClass().getSimpleName()); //JLabel jl=(JLabel)e.getSource();
//jl.setForeground(Color.black);
} @Override
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub
} @Override
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
}
}
这是源码呐,就是一个简单的模拟QQ的程序哎~~~
各位见笑了,我还是一步步按照教程敲出来的 = =
//给jphy2,初始化50个好友
JLabel []jlbs=new JLabel[50];
for(int i=0;i<jlbs.length;++i)
{
jlbs[i]=new JLabel(i+1+"",new ImageIcon("images/mm.jpg"),JLabel.LEFT);
jphy2.add(jlbs[i]);
//添加高亮效果
jphy2.addMouseListener(this); }
= =
韩顺平老师的javase视频教程
- -
MyEclipse8.5 java则是1.7 = =
修改后 JLabel []jlbs2=new JLabel[20];
for(int i=0;i<jlbs2.length;++i)
{
jlbs2[i]=new JLabel(i+1+"",new ImageIcon("images/mm.jpg"),JLabel.LEFT);
jpmsr2.add(jlbs2[i]);
//添加高亮效果
jlbs[i].addMouseListener(this);
}
为什么
System.out.println(e.getSource().getClass().getSimpleName());
显示的还是 JPanel
jphy2=new JPanel(new GridLayout(50,1,4,4));
//给jphy2,初始化50个好友
JLabel []jlbs=new JLabel[50];
for(int i=0;i<jlbs.length;++i)
{
jlbs[i]=new JLabel(i+1+"",new ImageIcon("images/mm.jpg"),JLabel.LEFT);
jphy2.add(jlbs[i]);
//添加高亮效果
jlbs[i].addMouseListener(this);
}
应该改这!