gpt4 book ai didi

JButton的Java子类覆盖setEnabled方法问题

转载 作者:搜寻专家 更新时间:2023-11-01 01:29:26 24 4
gpt4 key购买 nike

我有一个名为 ImageButton 的自定义按钮类,它扩展了 JButton。在其中我有一个我想调用的 setEnabled 方法,而不是 JButton 的 setEnabled 方法。

我的代码如下。在我的其他类中,我创建了一个新的 ImageButton 实例,但是当我尝试使用 setEnabled 方法时,它直接进入 JButton 的 setEnabled 方法。甚至在我运行代码之前,我的 IDE 就告诉我从未使用过 ImageButton 的 setEnabled 方法。如果我将方法更改为“SetOn”,它就可以正常工作。那么为什么我不能使用与父类(super class)相同的名称呢?我认为如果它是相同的名称,它应该隐藏父类(super class)方法?

public class ImageButton extends JButton{

public ImageButton(ImageIcon icon){
setSize(icon.getImage().getWidth(null),icon.getImage().getHeight(null));
setIcon(icon);
setMargin(new Insets(0,0,0,0));
setIconTextGap(0);
setBorderPainted(true);
setBackground(Color.black);
setText(null);
}

public void setEnabled(Boolean b){
if (b){
setBackground(Color.black);
} else {
setBackground(Color.gray);
}
super.setEnabled(b);
}
}

最佳答案

你需要改变

public void setEnabled(Boolean b){

public void setEnabled(boolean b){
^

(通过使用 Boolean 而不是 boolean,您重载方法而不是覆盖它。)


我鼓励您始终使用 @Override 注释旨在覆盖另一个方法的方法。如果你在这种情况下这样做,编译器会提示并说类似的话

The method setEnabled(Boolean) of type ImageButton must override or implement a supertype method.

关于JButton的Java子类覆盖setEnabled方法问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6269798/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com