gpt4 book ai didi

Java继承,使用super()

转载 作者:行者123 更新时间:2023-11-29 06:35:32 25 4
gpt4 key购买 nike

这部分作业是为了显示从 Java 库继承。我必须创建一个 java 类,在调用时将颜色标签设置为适当的背景:例如,如果 main 说 JLabel colorfulLabel = new JLabel(Color.Blue); 它会创建一个标签蓝色背景。

这是我当前的彩色标签类代码:

import javax.swing.*;
import java.awt.*;
public class colorfulLabel extends JLabel{
/*constructor uses one color parameter to represent background color
creates label using background color
calls parent constructor using super()
private Color color;*/
public colorfulLabel(Color color){
super(color);

JLabel l1 = new JLabel();
setBackground(color);
}
}

ps:是的,这是一小段代码,但我在 GUI 方面遇到了极大的困难,更不用说实现继承了。

尝试调用父构造函数时出现错误。

最佳答案

  1. 您正在尝试调用一个不存在的构造函数,super(color)。请查看 JLabel API查看哪些构造函数是合法的。你为什么要调用这个构造函数呢?
  2. 在 JLabel 扩展类中创建另一个 JLabel 毫无意义。
  3. 如果您打算看到背景颜色,您可能需要在构造函数中使您的对象不透明。

更好的方法是传入文本,或者通过添加 Color 参数来模仿其他有效的 JLabel 构造函数:

public class ColorLabel extends JLabel {
public ColorLabel(String text, Color bg) {
super(text); // **this** super makes sense
setBackground(bg);
setOpaque(true);
}

// + overloads for other constructors that accept Icon or text and Icon, or
// text, Icon and position,....
}

关于Java继承,使用super(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21652761/

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