为了账号安全,请及时绑定邮箱和手机立即绑定

麻烦大神帮忙看看下面这两个代码的区别在哪里?

麻烦大神帮忙看看下面这两个代码的区别在哪里?

慕工程0101907 2022-05-28 10:06:29
import java.awt.*;import javax.swing.*;public class Example1 extends JFrame {private static final long serialVersionUID = 1L;// 定义一个类继承JFrame类public void CreateJFrame(String title) { // 定义一个CreateJFrame()方法JFrame jf = new JFrame(title); // 实例化一个JFrame对象代码1 Container container = jf.getContentPane(); // 获取一个容器JLabel jl = new JLabel("这是一个JFrame窗体"); // 创建一个JLabel标签// 使标签上的文字居中jl.setHorizontalAlignment(SwingConstants.CENTER);container.add(jl); // 将标签添加到容器中container.setBackground(Color.white);//设置容器的背景颜色jf.setVisible(true); // 使窗体可视jf.setSize(200, 150); // 设置窗体大小// 设置窗体关闭方式jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);}public static void main(String args[]){//在主方法中调用createJFrame()方法new Example1().CreateJFrame("创建一个JFrame窗体");}}代码2import java.awt.Container;import java.awt.GridLayout;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.WindowConstants;public class GridLayoutPosition extends JFrame{public static final long serialVersionUID = 1L;public GridLayoutPosition(){Container cont =getContentPane(); //获得容器setLayout(new GridLayout(2,1,5,5));for(int i=0;i<4;i++){cont.add(new JButton("button"+i));}setTitle("你好");setSize(300,300);setVisible(true);setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);}public static void main(String[] args) {new GridLayoutPosition();// TODO 自动生成的方法存根}}我想知道为什么第一个要用jf.setSize()和jf.setVisible而第二个代码直接用setSize和setVisible。希望大神给我讲讲。我刚学,谢谢了
查看完整描述

2 回答

?
慕哥6287543

TA贡献1831条经验 获得超10个赞

第一个代码js是JFrame jf = new JFrame(title)这语句实例化的JFrame对象。
所以 jf.setSize(),是设置jf这个对象。
第二个代码的JFrame对象是GridLayoutPosition类继承Jframe来的。在GridLayoutPosition实例化后就是一个JFrame。
所以GridLayoutPosition类在自己类里设置自己用this.setSize()和this.setVisible(),把this关键字省略掉就变成了直接用setSize()和setVisible()设置了

查看完整回答
反对 回复 2022-05-30
?
慕仙森

TA贡献1827条经验 获得超7个赞

因为第二种方法省略了主语,但是这个主语是全局上下文this,就是这个继承了JFrame的类,所以就是这样

查看完整回答
反对 回复 2022-05-30
  • 2 回答
  • 0 关注
  • 148 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信