Java Swing JFrame窗口的实现
作者:xietansheng 发布时间:2021-11-30 12:03:37
标签:Swing,JFrame,窗口
1. 概述
官方JavaDocsApi: javax.swing.JFrame
JFrame,窗口。JFrame 是一个可以独立显示的组件,一个窗口通常包含有标题、图标、操作按钮(关闭、最小化、最大化),还可以为窗口添加菜单栏、工具栏等。一个进程中可以创建多个窗口,并可在适当时候进行显示、隐藏 或 销毁。
JFrame 常用构造方法:
/**
* 参数说明:
* title: 窗口标题
*/
JFrame()
JFrame(String title)
JFrame 常用方法:
// 设置窗口的 标题
void setTitle(String title)
// 设置窗口的 图标
void setIconImage(Image image)
// 设置窗口的 宽高
void setSize(int width, int height)
void setSize(Dimension d)
/**
* 设置窗口关闭按钮点击后的默认操作, 参考值:
* WindowConstants.DO_NOTHING_ON_CLOSE: 不执行任何操作。
* WindowConstants.HIDE_ON_CLOSE: 隐藏窗口(不会结束进程), 再次调用 setVisible(true) 将再次显示。
* WindowConstants.DISPOSE_ON_CLOSE: 销毁窗口, 如果所有可显示的窗口都被 DISPOSE, 则可能会自动结束进程。
* WindowConstants.EXIT_ON_CLOSE: 退出进程。
*/
void setDefaultCloseOperation(int operation)
// 设置窗口是否可放大缩小
void setResizable(boolean resizable)
// 设置窗口的 位置(相对于屏幕左上角)
void setLocation(int x, int y)
void setLocation(Point p)
// 设置窗口的 位置 和 宽高
void setBounds(int x, int y, int width, int height)
void setBounds(Rectangle rect)
// 获取窗口的位置坐标(相对于屏幕坐标空间)
Point getLocationOnScreen()
// 获取窗口的位置坐标(相对于父级坐标空间, 窗口的父级一般就是屏幕)
Point getLocation()
/**
* 设置窗口的相对位置。
* 如果 comp 整个显示区域在屏幕内, 则将窗口放置到 comp 的中心;
* 如果 comp 显示区域有部分不在屏幕内, 则将该窗口放置在最接近 comp 中心的一侧;
* comp 为 null, 表示将窗口放置到屏幕中心。
*/
void setLocationRelativeTo(Component comp)
// 设置将窗口 置顶 显示
void setAlwaysOnTop(boolean alwaysOnTop)
// 设置窗口的内容面板
void setContentPane(Container contentPane)
// 设置窗口是否可见, 窗口对象刚创建和添加相应组件后通过 setVisible(true) 绘制窗口, 其内部组件可能要此时才有宽高值
void setVisible(boolean b)
// 判断窗口是否处于显示状态
boolean isShowing()
// 销毁窗口, 释放窗口及其所有子组件占用的资源, 之后再次调用 setVisible(true) 将会重构窗口
void dispose()
// 调整窗口的大小, 以适合其子组件的首选大小和布局。
void pack()
2. 代码实例
package com.xiets.swing;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class Main {
public static void main(String[] args) {
final JFrame jf = new JFrame("测试窗口");
jf.setSize(400, 400);
jf.setLocationRelativeTo(null);
jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
JPanel panel = new JPanel();
JButton btn = new JButton("Show New Window");
btn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// 点击按钮, 显示新的一个窗口
showNewWindow(jf);
}
});
panel.add(btn);
jf.setContentPane(panel);
jf.setVisible(true);
}
public static void showNewWindow(JFrame relativeWindow) {
// 创建一个新窗口
JFrame newJFrame = new JFrame("新的窗口");
newJFrame.setSize(250, 250);
// 把新窗口的位置设置到 relativeWindow 窗口的中心
newJFrame.setLocationRelativeTo(relativeWindow);
// 点击窗口关闭按钮, 执行销毁窗口操作(如果设置为 EXIT_ON_CLOSE, 则点击新窗口关闭按钮后, 整个进程将结束)
newJFrame.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
// 窗口设置为不可改变大小
newJFrame.setResizable(false);
JPanel panel = new JPanel(new GridLayout(1, 1));
// 在新窗口中显示一个标签
JLabel label = new JLabel("这是一个窗口");
label.setFont(new Font(null, Font.PLAIN, 25));
label.setHorizontalAlignment(SwingConstants.CENTER);
label.setVerticalAlignment(SwingConstants.CENTER);
panel.add(label);
newJFrame.setContentPane(panel);
newJFrame.setVisible(true);
}
}
来源:https://blog.csdn.net/xietansheng/article/details/75948927


猜你喜欢
- 本文实例为大家分享了Java从服务端下载Excel模板文件的具体实现代码,供大家参考,具体内容如下方法一 (2021年01月更新)生成exc
- 初级技巧 - 乐观锁乐观锁适合这样的场景:读不会冲突,写会冲突。同时读的频率远大于写。以下面的代码为例,悲观锁的实现:public Obje
- 很久之前也写过一篇使用Jitpack发布Android开源库的文章,详见Android发布项目到jitpack的完整步骤近来因为工作原因,又
- Android API Demos中有很多非常Nice的例子,这些例子的代码都写的很出色,如果大家把API Demos中的每个例子研究透了,
- 同线程回收对象上一小节剖析了从recycler中获取一个对象, 这一小节分析在创建和回收是同线程的前提下, recycler是如何进行回收的
- spring boot ${}占位符不起作用问题:在 pom.xml 文件里定义好属性标签,然后在 properties或者xml 中使用$
- 本文实例为大家分享了C#使用Datatable导出Excel的具体代码,供大家参考,具体内容如下using NPOI.SS.UserMode
- 本文实例讲述了java和c#使用hessian通信的方法,是非常实用的技巧。分享给大家供大家参考。具体分析如下:首先,hessian主页为:
- 关于ListBoxListBox是WinForm中的列表控件,它提供了一个项目列表(一组数据项),用户可以选择一个或者多个条目,当列表项目过
- Android EasyPlayer声音自动停止、恢复,一键静音等功能我们在开发播放器时,可能会需要静音或者降低音量的功能。比如说某款音乐播
- 在使用Unity中的Debug.Log()进行日志输出时很不方便,在打包出来的可执行文件中没有办法看到输出,所有就想自己实现一个简易的日志输
- 1、Java序列化与反序列化是什么?Java序列化是指把Java对象转换为字节序列的过程,而Java反序列化是指把字节序列恢复为Java对象
- 1. 程序计数器(线程私有)程序计数器是一块比较小的内存空间,可以看做是当前线程所执行的字节码的行号指示器(切换线程后,能恢复到正确的执行位
- 首先要引用一下类库:using Ionic.Zip;这个类库可以到网上下载。下面对类库使用的封装方法:得到指定的输入流的ZIP压
- ADB全称Android Debug Bridge, 是android sdk里的一个工具, 用这个工具可以直接操作管理android模拟器
- 简介 在Android中运用了很多机制,例如:广播、服务、数据库、通知、包……等等。什么是广播?Broadcast是一
- 开发环境: springboot + mybatis plus场景:在DAO的bean中有byte[]类时,写入可以成功,但是读取不行。从错
- 前言Mybatis MapperScannerConfigurer 自动扫描 将Mapper接口生成代理注入到Spring Mybatis在
- java 抛出异常处理的方法为了避免调用的人不知道有异常,才抛出异常的,所以是谁掉用的久在哪里处理。说的对吗对.1、throws关键字通常被
- Java 序列化和反序列化实例详解在分布式应用中,对象只有经过序列化才能在各个分布式组件之间传输,这就涉及到两个方面的技术-发送者将对象序列