Java继承,使用super()

标签 java swing inheritance constructor

这部分作业是为了显示从 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/

相关文章:

java - 如何解决应用程序中加载单选按钮选择的延迟?

java - 更新 Jlabel 的新位置

java - 从通用父类(super class)型扩展?

C# 基类型列表添加通用子实例

node.js - 如何从子模型获取父表属性

java - 了解 Java 中同步块(synchronized block)与 volatile 变量的原子性、可见性和重新排序

java - 如何重命名子菜单项?

java - 在 Swing 的 JTextPane 中设置选项卡策略

java - swing GUI 组件的计时器问题

java - Java中的字符串匹配和替换