目录
1.问题背景
在Java Swing 开发中,我们经常用到JFrame构建窗口;
用JFrame frame=new JFrame( ); frame.setTitle("xxx");可以正常运行。
但用this.setTitle("xxx");却可能报错或无效。
本文深入分析它们的区别,并给出正确的使用方式。
2.JFrame 和 this 的核心区别
(1)JFrame 是类名,this是当前对象引用
JFrame: 是java.swing.JFrame这一类,必须通过创建实例才能调用方法,
如:
JFrame frame = new JFrame(); //创建一个实例
frame.setTitle("Hello"); //调用方法
this:指当前类的实例,若当前类继承JFrame 则可调用JFrame方法。
3.不同场景下的使用方法
场景1:当前类继承JFrame
import javax.swing.*;
public clas MyFrame extends JFrame{ //继承JFrame
public MyFrame(){
this.setTitle("使用this"); //this调用方法,this就是窗口
this.setSize(400,300); //设置关闭方式
}
public static void main(String[] args){
new MyFrame().setVisible(true); //调用方法显示窗口
}
}
说明:由于Myframe 继承JFrame,this 就是当前窗口对象,可以直接用this调用方法
场景2:当前类不继承JFrame
import javax.swing.*;
public class MyFrame{ //不继承JFrame
JFrame frame;
public MyFrame(){
frame=new JFrame(); //必须创建实例
frame.setTitle(‘使用JFrame“);
frame.setSize(400.300);
}
public static void main(String[] args){
new MyFrame().frame.setVisible(true);//显示窗口
}
}
说明:当前没有继承JFrame方法,只能通过实例调用方法
4.常见错误分析
错误1:this无法调用JFrame 方法
未继承JFrame类
错误2:窗口不显示
没有调用setVisible(true)
5.总结
JFrame是一个类必须通过实例调用方法;
this能否调用JFrame方法,取决于当前类是否继承JFrame;
继承JFrame适合简单窗口,不继承适合多个窗口,灵活度更高。
6.讨论
你在使用JFrame和this时遇到了什么问题?
版权声明:本文由Hygge-star原创,转载需注明出处。