我需要创建一个具有自定义颜色和字体的类XLabel

我需要所有JLabels具有以下作用

 JLabelTest.setFont(new Font("Comic Sans MS", Font.BOLD, 20));
 JLabelTest.setForeground(Color.PINK);


这就是我尝试过的

public class XLabel extends JLabel {

    @Override
    public void setFont(Font f)
       {
        super.setFont(new Font("Comic Sans MS", Font.BOLD, 20));
         repaint();
        }

    @Override
    public void setForeground(Color fg)
       {
        super.setForeground(Color.PINK);
         repaint();
       }
}


但是,当我尝试使用它时,XLabel test= new XLabel("test")不会编译,因为构造函数XLabel (String )是未定义的。但是它扩展了JLabel,因此它应该继承其所有构造函数。为什么不呢?如何设置自定义的颜色和字体?

最佳答案

您无需重写这些方法。 JLabel是一个抽象类,因此XLabel自动继承那些方法。从XLabel类中删除这些方法,然后尝试在构造函数中指定前景和字体。

public class XLabel extends JLabel {

public XLabel(String text) {
    super(text);
    this.setForeground(Color.BLACK);
    this.setFont(new Font("Comic Sans MS", Font.BOLD, 20));
}


然后,无论何时创建XLabel的实例,都会自动调用方法setForeground()setFont()。这使得XLabel的任何实例的颜色均为粉红色,字体为Comic Sans。

10-08 13:48