2021-06-03

JFrame

JFrame(窗口)是独立的存在的顶级容器,不能放置在其他容器之中。

功能:最小化,设定窗口大小等

创建JFrame对象
import javax.swing.JFrame;
public class Demo1 {
	public static void main(String[] args) {
        JFrame jf = new JFrame();
}

程序运行没有报错,但是没有窗口弹出,为什么呢?

显示窗口
import javax.swing.JFrame;
public class Demo1 {
	public static void main(String[] args) {
        JFrame jf = new JFrame();
        //设置窗体可见
		jf.setVisible(true);
}
给窗口title命名
  • 方法一
import javax.swing.JFrame;
public class Demo1 {
	public static void main(String[] args) {
        JFrame jf = new JFrame();
        jf.setTitle("这是我的第一个窗体!");
		//设置窗体可见
		jf.setVisible(true);
}
  • 方法二(推荐)
import javax.swing.JFrame;
public class Demo1 {
	public static void main(String[] args) {
        JFrame jf = new JFrame("这是我的第一个窗体!");
		//设置窗体可见
		jf.setVisible(true);
}

当关闭窗口的时候,我们发现程序并没有结束退出,怎么做呢?

窗口关闭,代码结束
import javax.swing.JFrame;
public class Demo1 {
	public static void main(String[] args) {
        JFrame jf = new JFrame("这是我的第一个窗体!");
		//设置关闭窗口时,一同结束掉后台的Java程序
		jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		//设置窗体可见
		jf.setVisible(true);
}

每次运行窗口都很小,每次都要把它拉大太麻烦了,现在我们来设置窗口大小。

设置窗口大小

调用setSize(width, height)方法,注意width,height值均为像素

import javax.swing.JFrame;
public class Demo1 {
	public static void main(String[] args) {
        JFrame jf = new JFrame("这是我的第一个窗体!");
		//设置关闭窗口时,一同结束掉后台的Java程序
		jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		//设置窗口大小		-->像素
		jf.setSize(300, 400);
		
		//设置窗体可见
		jf.setVisible(true);
}

窗口的基本内容就讲完了,但是这样写在多线程中是不安全的。

改进
  • 方法提取
    1. 使用菜单命令
    2. Ctrl + 1
    3. Alt + Shift + M(推荐)
import javax.swing.JFrame;
public class Demo1 {
	public static void main(String[] args) {
        method();
    }
	private static void method() {
		JFrame jf = new JFrame("这是我的第一个窗体!");
		// 设置关闭窗口时,一同结束掉后台的Java程序
		jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

		// 设置窗口大小 -->像素
		jf.setSize(300, 400);

		// 设置窗体可见
		jf.setVisible(true);
	}
}
  • 使用工具类
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
public class Demo1 {
	public static void main(String[] args) {
        //使用SwingUtilities工具类,invokeLater(doRun)方法,new 一个Runnable()接口
        SwingUtilities.invokeLater(new Runnable() {
			
			@Override
			public void run() {
				method();
			}
		});
        
    }
	private static void method() {
		JFrame jf = new JFrame("这是我的第一个窗体!");
		// 设置关闭窗口时,一同结束掉后台的Java程序
		jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

		// 设置窗口大小 -->像素
		jf.setSize(300, 400);

		// 设置窗体可见
		jf.setVisible(true);
	}
}

优势:拥有2条线程,一条主线程,和一条自己通Runnable开辟的线程。

为什么? 主线程不能更新UI

一个接口Runnable(),一个方法run()这是函数式接口,函数式接口可以简化

  • 代码简化
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
public class Demo1 {
	public static void main(String[] args) {
        //选中new Runnable()使用快捷键 Ctrl + 1
		SwingUtilities.invokeLater(() -> method());

    }
	private static void method() {
		JFrame jf = new JFrame("这是我的第一个窗体!");
		// 设置关闭窗口时,一同结束掉后台的Java程序
		jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

		// 设置窗口大小 -->像素
		jf.setSize(300, 400);

		// 设置窗体可见
		jf.setVisible(true);
	}
}
总结
  1. 创建对象
  2. 指定title名称
  3. 设置关闭效果
  4. 指定宽高大小
  5. 设置窗口可见
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值