这部分作业是为了显示从 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 方面遇到了极大的困难,更不用说实现继承了。
尝试调用父构造函数时出现错误。
最佳答案
- 您正在尝试调用一个不存在的构造函数,
super(color)
。请查看 JLabel API查看哪些构造函数是合法的。你为什么要调用这个构造函数呢? - 在 JLabel 扩展类中创建另一个 JLabel 毫无意义。
- 如果您打算看到背景颜色,您可能需要在构造函数中使您的对象不透明。
更好的方法是传入文本,或者通过添加 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/