Java Swing JFrame窗口的实现

作者:xietansheng 时间:2021-11-30 12:03:37 

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);
}

}

Java Swing JFrame窗口的实现

来源:https://blog.csdn.net/xietansheng/article/details/75948927

标签:Swing,JFrame,窗口
0
投稿

猜你喜欢

  • Java多线程:生产者与消费者案例

    2021-06-30 05:47:08
  • Java8 Stream流多字段求和、汇聚的实例

    2023-03-14 20:17:23
  • 关于@MapperScan包扫描的坑及解决

    2023-02-13 02:45:46
  • JAVA ArrayList详细介绍(示例)

    2023-02-18 22:30:56
  • 深入剖析Java中String类的concat方法

    2023-06-02 07:07:13
  • Mybatis中的like模糊查询功能

    2023-09-25 11:57:28
  • C# 删除字符串中的中文(实例分享)

    2021-12-30 12:55:48
  • 关于使用Mybatisplus自带的selectById和insert方法时的一些问题

    2023-11-01 14:15:42
  • Java反射机制在Spring IOC中的应用详解

    2023-11-10 14:09:32
  • java IO实现电脑搜索、删除功能的实例

    2021-12-17 07:16:14
  • Java IO流之字符流的使用详解

    2023-10-18 11:28:08
  • 将Java的List结构通过GSON库转换为JSON的方法示例

    2023-02-13 20:33:52
  • Java concurrency线程池之线程池原理(二)_动力节点Java学院整理

    2023-11-28 23:43:18
  • Spring Boot静态资源路径的配置与修改详解

    2022-09-15 19:27:08
  • IDEA类存在但找不到的解决办法

    2021-10-22 07:24:43
  • android实现倒计时功能(开始、暂停、0秒结束)

    2021-09-29 11:02:29
  • java控制台输入示例分享

    2023-11-28 02:28:05
  • Scala方法与函数使用和定义详解

    2021-10-05 06:34:12
  • java实现省市区转换成树形结构

    2022-11-27 03:43:37
  • Apache Commons Math3探索之多项式曲线拟合实现代码

    2023-11-16 22:01:56
  • asp之家 软件编程 m.aspxhome.com