Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何覆盖JLabel的颜色和字体?_Java_Jlabel - Fatal编程技术网

Java 如何覆盖JLabel的颜色和字体?

Java 如何覆盖JLabel的颜色和字体?,java,jlabel,Java,Jlabel,我需要创建一个具有自定义颜色和字体的类XLabel 我需要所有的jlabel才能产生以下效果 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)

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

我需要所有的
jlabel
才能产生以下效果

 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(String)
未定义,因此
XLabel test=newxlabel(“test”)
不会编译。但是它扩展了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的任何实例都具有粉红色和字体

这正是我所做的。但这会导致重复的代码。当我有成百上千的
JLabel
元素和
setFont
setForeground
元素时。啊。您没有在问题中指定需要多个具有这些确切属性的jlabel。您只需为
XLabel
创建一个构造函数,用于设置字体和前景。我会用正确的代码更新我的答案。谢谢你的更新。我也试过了。此构造函数仅适用于在没有任何参数的情况下实例化的情况。当我使用
XLabel test=newxlabel(“test”)
时,它将不起作用,因为构造函数
XLabel(String)未定义
谢谢。我花了好几个小时在
paintComponent
和其他方法上,没有问题!另外,更好的方法是现在就使用
super(text)
。再次编辑它。但无论哪种方法都有效。可能是重复的