继承JPanel类自定义方法后,调用出现问题

我先定义了一个radarpanel类,继承自Jpanel,然后在radarpanel中自定义一个方法 setrange()

 public class radarPanel extends JPanel{
        private int range = 6;

     public void setRange(String option) {
         range = 12;
            System.out.println(range);
            ................//省略
     }
 }

主类中调用定义的方法,结果显示错误

 radarpanel = new radarPanel(); 
        radarpanel.addMouseWheelListener(new MouseWheelListener() {
            public void mouseWheelMoved(MouseWheelEvent e) {
                if (e.getWheelRotation() > 0) {   //减小量程
                    radarpanel.setRange("add");
                }
                if(e.getWheelRotation() < 0){  //增大量程
                    radarpanel.setRange("reduce");
                }
                System.out.println(radarpanel.getRange());
            }
        });

错误提示
图片说明
请指教,不知道是什么问题,谢谢

7个回答

radarpanel需要类型转化,第三种修改。。。

wang2046783134
wang2046783134 请问能详细些吗?我是初学java,不太懂
接近 4 年之前 回复

没有这个方法吧,,,,

wang2046783134
wang2046783134 我再继承类中自定义了一个,调用的时候说没有定义,望解答
接近 4 年之前 回复

你 把自定义的类-----类名改成大写字母开头,,radarPanel ---->RadarPanel

然后你在 报错的那行,radarPanel 确定下是不是 RadarPanel类型的

wang2046783134
wang2046783134 好的,我试下,刚才试了一下前边加了提示的第三种修改,可以运行,但是不知道原因
接近 4 年之前 回复

第一种改法可以
图片说明
谢谢@lijheee

类名是小写,radarPanel = new radarpanel();
radarPanel按理说是可以调用在radarPanel类里面定义的方法setRange()的,但是编译器区分大小写,对radarPanel.setRange()辨别有问题,所以让你强转类型
((radarPanel)radarPanel).setRange()

以后---类名一定要大写开头

wang2046783134
wang2046783134 谢谢您的解答,很感谢你,我以后会注意这个问题的,谢谢
接近 4 年之前 回复

找到错误了,我真是太粗心了,定义的时候是JPanel

 private JPanel radrpanel;  //这里错了(´pωq`)

因为RadarPanel是JPanel的子类所以没有报错,让然可以正常调用
改正后一起正常,学习的过程曲曲折折
###感谢各位计算机大神的帮助,在这里不胜感激

找到问题的原因了,因为写了一个jpanel的子类,所以在后期修改的时候,忘记修改定义时候的修改类型了,应该类型是radarpanel,不好意思

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问