清风羽 2014-08-27 08:09 采纳率: 0%
浏览 1086

在用java swing 时遇到关于设置背景图片的问题

public class LoginPanel extends JPanel {
protected ImageIcon icon;//protected的访问权限是同一个包的类即可访问它
public int width,height;

public LoginPanel(){
    super();//调用父类的构造方法,此处可以不显示调用,系统会自动隐式调用
    icon=new ImageIcon("res/login.jpg");
    width=icon.getIconWidth();
    height=icon.getIconHeight();
    setSize(width,height);//调用继承自父类JPanel中 的setSize()方法设置面板的大小因为是继承来的是自己的了所以在类内可以不用实例对象去调用
    //this.setSize(width,height);
}


//想要将这张图片作为背景图片,是不能直接使用add()方法添加该icon对象的;在LoginPanel类中重写paintComponent()方法,并在该方法中调用Graphics类的drawImage()方法绘制该图片
//重写paintComponent()方法
protected void paintComponent(Graphics g){
    super.paintComponent(g);//调用父类的paintComponent()方法
    Image img = icon.getImage();
    g.drawImage(img,100,100,this);//在当前面板中绘制该Image文件 img;this参数表示图片绘制在哪里
    System.out.println("执行了paintComponent()方法");
}

为什么在主类中使用new LoginPanel()实现一个实例对象时,函数会执行重写的paintComponent(Graphics g)方法(输出了执行了paintComponent()方法);原则上这个方法LoginPanel中的实例方法,,在实例化类的时候不应该会执行的啊? 请问为什么这里会被执行,或者说实例化 对象时类中的哪些部分会被执行哪些不被执行,求大神帮忙总结一下
附测试用的主函数代码
public class test {

public static void main(String[] args) {
    // TODO Auto-generated method stub

    JFrame.setDefaultLookAndFeelDecorated(true);
    JFrame jf = new JFrame();
    jf.add(new LoginPanel());
    jf.setVisible(true);
    jf.setSize(800,800);
    jf.setLocationRelativeTo(null);
    jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);


}

}

  • 写回答

0条回答

    报告相同问题?

    悬赏问题

    • ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
    • ¥15 如何在scanpy上做差异基因和通路富集?
    • ¥20 关于#硬件工程#的问题,请各位专家解答!
    • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
    • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
    • ¥30 截图中的mathematics程序转换成matlab
    • ¥15 动力学代码报错,维度不匹配
    • ¥15 Power query添加列问题
    • ¥50 Kubernetes&Fission&Eleasticsearch
    • ¥15 報錯:Person is not mapped,如何解決?