什么是窗体?

  • 窗体,是某个程序,在电脑中,手机中的窗口化程序。它在非固定状态下,可以自由的变换大小。同时,窗体,也是容器,窗体这个容器可以在内部处理很多的小组件。
  • 窗体的具体例子:例如,所有的浏览器,浏览器中网页里打开的提示框,电脑的QQ,手机上的小窗模式,都是窗体;
  • 在本篇内容中,我们会使用JFrame和JDialog两个类,在实现java中的窗体;

在JAVA中如何创建窗体?

在java中,我们需要引入javax.swing包下的JFrame类或者JDialog类,这样才能使用两个窗体;但是,一些窗体中的组件也会用到swing包下的一些类,所以引用包的时候,通常都会是import javax.swing.*;来引用swing包下的所有类;

另:JFrame和JDialog外表基本一致,只是在运行中的调度不同,因此本节只考虑如何创建窗体。因为两个类的外表基本一致,所有下列两种创建方法两个类都是可以使用的(退出方法外);

  • 方法一:构造方法的创建

    import javax.swing.*;
    public class windowJFame_JDialog extends JFrame{public windowJFrame_JDialog() {}
    }
    

    在主类中继承JFrame这个类,那么他的构造方法就是一个窗体。在这个构造方法中我们无需再实例化JFrame这个类,我们可以直接调用关于JFrame类中的方法,例如设置大小和坐标;

    同时,在主类中继承JFrame时,我们也可以在非主类上实现,如:

    class windowDemo extends JFrame{public windowDemo() {}
    }
    

    这样windowDemo这个构造方法也是可以被作用成JFrame窗体的。

  • 方法二:实例化调用
    有人说,用构造方法创建的话,局限性是不是太多了?没关系,java还提供了实例化的方式来创建窗体:

    public static void main(String[] args){JFrame jf = new JFrame();// 实例化JFrame窗体
    }
    

    我们在main方法中实例化了JFrame对象,使用jf来接收这个对象;这样jf就是一个窗体,在运行时就会实现这个窗体(前提设置窗体可见);

    在实例化方式创建完窗体后,将不再提供默认对象了,也就是不能直接调用JFrame中的方法!在需要调用方法的时候我们需要借助接收的jf这个变量对象来调用JFrame中的方法;

基本运作的方法:

上面我们只是创建了一个或多个窗体,但运行的时候并未显示出窗体,这是怎么回事?
Java呢,将JFrame和JDialog两个类的窗体都默认设置成了不可见,在窗体不可见的情况下,java无法实现窗体这些代码(用户看不见而已)。这时,我们将setVisible方法设置为true,这样窗体就可见了。

上图中右下角的就是我们所设置的窗体,由于现在并没有设置大小和坐标,可能你看见的窗体是图中的样子,但是坐标是在屏幕的左上角。

所以,现在来给它设置大小以及坐标。

具体方法如上图,方法的使用在图中以及给出
这里还有个方法setLocationRelativeTo() —— 将窗口的位置设置为指定的组件。在做些小例子的时候,使用该方法将值设为null,可以直接使窗体居中。

设置完大小和坐标,这时,一个窗体也就差不多完成了,但是还有一步!
我们再点击窗体退出的时候,项目并未结束。这里将再调用setDefaultCloseOperation()这个方法,这个方法中定义了一些关于窗体退出时对于项目和窗体的操作

参数如下:

 /** EXIT_ON_CLOSE : 隐藏窗口,并停止运行* DO_NOTHING_ON_CLOSE : 无任何操作* HIDE_ON_CLOSE : 隐藏窗体,但不停止程序* DISPOSE_ON_CLOSE : 释放窗体资源* * */

这时,设置窗体退出时的操作吧。像下图调用完后,窗体退出后项目也就可以停止运行了

后语:

看完上述操作后,对于JFrame窗体也就有了一个大概的了解,但这也仅仅只是一点点而已。对于窗体,我会分几篇来说明,这才是第一篇:如何创建窗体。

小提:上述的代码,虽然我都是用JFrame类来说明创建,如果将JFrame类替换成JDialog,程序将不提供窗体退出的方法,因为JDialog是一个对话框,本质是配合JFrame来使用的,这点需要注意;

如果有任何错误的地方,请在评论区及时说明!

JFrame窗体的基本操作(1-窗体的创建)相关推荐

  1. winform父窗体实现多个子窗体只能显示一个

    一.前言 当一个父窗体中包含多个动能的时候可能会存在很多子窗体,那么当每个都去打开的时候就会都显示在父窗体上,这样给用户的视觉肯定很不舒服.所以当出现这种情况的时候肯定也会有解决方法,以下就是一种解决 ...

  2. C# 非模式窗体show()和模式窗体showdialog()的区别

    对话框不是模式就是无模式的.模式对话框,在可以继续操作应用程序的其他部分之前,必须被关闭(隐藏或卸载).例如,如果一个对话框,在可以切换到其它窗 体或对话框之前要求先单击"确定"或 ...

  3. [CB]将窗体从属于主窗体

    几乎所有正式一点的C++ Builder程序除了主窗体外都还有从属窗体,有时是对话框,有时是无模式窗口.VCL使得创建和显示从属窗体都易如反掌.但不是所有程序都适于采用无模式窗体,有些程序需要在一个主 ...

  4. c# 火狐浏览器怎么嵌入窗体中_C#WinForm窗体内Panel容器中嵌入子窗体、程序主窗体设计例子...

    C#WinForm父级窗体内Panel容器中嵌入子窗体.程序主窗体设计例子 在项目开发中经常遇到父级窗体嵌入子窗体所以写了一个例子程序,顺便大概划分了下界面模块和配色,不足之处还望指点 主窗体窗体采用 ...

  5. 将MATLAB的figure窗体嵌入到C#窗体应用的(panel)中

    本文主要讲解将MATLAB绘制的figure窗体嵌入到C#winform窗体的panel控件中. 在网上找了相关的资料后,发现网上大部分的处理方法是创建新线程和跨线程的方式,复不复杂我就不说了,而且我 ...

  6. VB.NET学习笔记:一步一步跟我学习Windows 窗体可视化继承实现窗体复用

    在一个项目中不可避免会有多个窗体的控件布局类似,里面的代码也有好多相同的,可以新建窗体,然后复制粘贴来实现窗体的重复使用,这种方式固然好,可麻烦也随之而来,随着项目的深入,不可避免的要修改窗体布局或代 ...

  7. C# WinForm 在窗口菜单上显示已打开窗体的标题及其窗体的排列

    1. C# WinForm 在窗口菜单上显示已打开窗体的标题 设置窗体菜单的MdiList属性为 True 2.窗体的排列 Code // //  平铺 base.LayoutMdi(MdiLayou ...

  8. C#窗体应用设置多窗体和设置启动窗体

    场景 VS中使用C#开发一个登录窗体应用程序: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/99439474 一个完整的Wind ...

  9. 拖动窗体的任意区域移动窗体

    这是一个通过捕获WM_NCHITTEST消息来实现拖动窗体的任意区域移动窗体的方法. 在Form1的public部分声明WM_NCHITTEST消息处理过程: public     procedure ...

最新文章

  1. 智能工厂的关键:基于机器学习的工业视觉
  2. leftjoin及多个leftjoin执行顺序
  3. 让 Linux 防火墙新秀 nftables 为你的 VPS 保驾护航
  4. 华为SNS2224巡检
  5. Leetcode No.146 ****
  6. python遗传算法_基于Python的遗传算法特征约简(附代码)
  7. R语言使用merge函数合并数据,如何保持原始数据顺序
  8. 解决Debug certificate expired的问题 - 转
  9. java连接SqlServer2000类,比较完整,比较强大
  10. 【VISIO2016箭头使用】
  11. Random Features for Large-Scale Kernel Machines笔记
  12. s数据结构替换子表java版,数据结构(Java版)-习题解答与实验指导
  13. 聊聊世界编程语言排行榜的事
  14. 性能魔方七剑下天山之青干剑:CDN2.0,速度加快一倍,成本减少一半
  15. RuntimeError: iter() is only supported inside of tf.function or when eager execution is enabled.
  16. 模板字符串`${}` 各种函数中的this指向?
  17. 一文读懂计算机组成,一文读懂为什么要做动态心电图检查?
  18. [源码分析] Facebook如何训练超大模型 --- (3)
  19. 重读《一段关于国产芯片和操作系统的往事》
  20. 倒金字塔java语言_金字塔和倒金字塔

热门文章

  1. linux nginx启动用户权限,Linux 普通用户(www)启动nginx
  2. GEE:GEDI L4A 地上生物量密度(AGBD)数据集下载
  3. h5 中的 section 标签
  4. jsplumb设置锚点_说明 · rysinal/jsPlumb Wiki · GitHub
  5. 头文件中加 #ifndef
  6. buuctf—数据包中的线索
  7. 现代软件工程 第一周作业
  8. 搞流量的小道道(扶摇生财思维)
  9. 计算机毕业设计Java网上投稿管理系统(源码+系统+mysql数据库+Lw文档)
  10. 【就业面试】技术面试题目及答案(新)