import java.awt.*;
import java.util.Scanner; import javax.swing.*; public class Test_16_13 extends JFrame{ public Test_16_13(){
ImageIcon im = new ImageIcon("image/slide1.jpg");
String s = "jlabel_mine";
JLabel1 j1 = new JLabel1(s);
add(j1);
//add(new JLabel("JLabel标签"));
} public static void main(String[] args){
Test_16_13 frame = new Test_16_13();
frame.setSize(800, 600);
frame.setTitle("Exercise15_8");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocationRelativeTo(null); // Center the frame
frame.setVisible(true);
}
class JLabel1 extends JLabel{
private ImageIcon ic;
private String s;
public JLabel1(ImageIcon ic){
this.ic = ic;
}
public JLabel1(String s){
this.s = s;
}
}
}
代码如上,我在主类Test_16_13里面自定义了一个JLabel子类JLabel1,然后在JFrame的构造函数中添加,但是无法在JFrame里面显示,请问是为什么?
解答:
刚才把子类和父类的教程又看了一遍,想了下,原来我新建子类有一个最大的问题。那就是没有重载父类的构造函数。我的构造函数都是使用的自定义的构造函数。
所以,我的子类不能被认可。下面是我修改的JLabel1的构造函数:
class JLabel1 extends JLabel{
// private ImageIcon ic;
// private String s;
public JLabel1(ImageIcon ic){
super(ic);
}
public JLabel1(String s){
// this.s = s;
super(s);
}
}