Swing如何使用?几个操作示例教会你!

news2024/12/22 20:23:47

以下是四个使用 Swing 组件创建的示例代码:

示例一:JFrame

JFrame 是一个顶级容器,用于创建框架窗口。下面是一个简单的 JFrame 示例:

import javax.swing.JFrame;

/**
 * @author: Ajie
 * @create: 2023/6/21
 * @Description:
 * @FileName: MyDialog
 * @History:
 * @自定义内容:
 */
public class MyFrame extends JFrame {
    public MyFrame() { // 构造函数
        setTitle("My JFrame"); // 设置 JFrame 的标题
        setSize(400, 400); // 设置 JFrame 的大小
        setLocationRelativeTo(null); // 将 JFrame 相对于屏幕居中显示
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 设置 JFrame 的关闭操作
        setVisible(true); // 显示 JFrame
    }
    
    public static void main(String[] args) { // 主函数
        new MyFrame(); // 创建一个 MyFrame 对象
    }
}

这个示例中,我们创建了一个 MyFrame 类继承了 JFrame,并在构造函数中设置了框架的标题,大小,居中位置和关闭操作。最后创建了一个 MyFrame 实例来启动应用程序。

示例图:

 

 

示例二:JPanel

JPanel 是一个常规容器,用于组织 Swing 组件、划分布局等操作。下面是一个简单的 JPanel 示例:

import javax.swing.*;
import java.awt.*;

/**
 * @author: Ajie
 * @create: 2023/6/21
 * @Description:
 * @FileName: MyDialog
 * @History:
 * @自定义内容:
 */
public class MyPanel extends JPanel {
    public MyPanel() { // 构造函数
        // 在 MyPanel 中添加两个 JButton
        add(new JButton("Button 1"));
        add(new JButton("Button 2"));
    }
    
    public static void main(String[] args) { // 主函数
        JFrame frame = new JFrame(); // 创建 JFrame 对象
        frame.setTitle("My JPanel"); // 设置 JFrame 的标题
        frame.setSize(400, 400); // 设置 JFrame 的大小
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 设置 JFrame 的关闭操作
        frame.setLocationRelativeTo(null); // 将 JFrame 居中显示
        
        MyPanel panel = new MyPanel(); // 创建 MyPanel 对象
        frame.add(panel); // 将 MyPanel 对象添加进 JFrame
        
        frame.setVisible(true); // 显示 JFrame
    }
}

这个示例中,我们首先创建了一个 MyPanel 类继承了 JPanel,在构造函数中添加了两个按钮(JButton)。然后在 main 方法中创建了一个 JFrame 实例,并把 MyPanel 实例添加到 JFrame 中。

示例图:

 

示例三:JDialog

JDialog 是一个顶级容器,用于创建对话框窗口。下面是一个简单的 JDialog 示例:

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

/**
 * @author: Ajie
 * @create: 2023/6/21
 * @Description:
 * @FileName: MyDialog
 * @History:
 * @自定义内容:
 */
public class MyDialog extends JDialog implements ActionListener {
    private JLabel label; // 创建一个 JLabel 对象

    public MyDialog(JFrame parent) { // 构造函数,接受一个 JFrame 对象作为参数
        // 调用 JDialog 的构造函数,设置标题、模态、布局、位置等属性
        super(parent, "My JDialog", true);
        setLayout(new FlowLayout()); // 设置 JDialog 的布局为 FlowLayout
        
        label = new JLabel("This is a JDialog."); // 创建一个 JLabel,并设置文本内容
        add(label); // 将 JLabel 添加进 JDialog
        
        JButton okButton = new JButton("OK"); // 创建一个 JButton 对象
        okButton.setActionCommand("OK"); // 设置 JButton 的 actionCommand 属性为 "OK"
        okButton.addActionListener(this); // 为 JButton 添加 ActionListener
        add(okButton); // 将 JButton 添加进 JDialog
        
        setDefaultCloseOperation(DISPOSE_ON_CLOSE); // 设置 JDialog 的关闭操作为 DISPOSE_ON_CLOSE
        setLocationRelativeTo(null); // 将 JDialog 相对于父窗口居中显示
        pack(); // 调整 JDialog 的大小,以适应其中包含的组件
        setVisible(true); // 显示 JDialog
    }

    public void actionPerformed(ActionEvent e) { // ActionListener 接口的方法
        dispose(); // 关闭 JDialog
    }

    public static void main(String[] args) { // 主函数
        JFrame frame = new JFrame(); // 创建 JFrame 对象
        frame.setTitle("My JDialog"); // 设置 JFrame 的标题
        frame.setSize(400, 400); // 设置 JFrame 的大小
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 设置 JFrame 的关闭操作
        frame.setLocationRelativeTo(null); // 将 JFrame 居中显示
        
        JButton button = new JButton("Show JDialog"); // 创建一个 JButton 对象
        button.addActionListener(new ActionListener() { // 为 JButton 添加 ActionListener
            public void actionPerformed(ActionEvent e) {
                JDialog dialog = new MyDialog(frame); // 创建一个 MyDialog 对象
            }
        });
        frame.add(button); // 将 JButton 添加进 JFrame
        
        frame.setVisible(true); // 显示 JFrame
    }
}

这个示例中,我们首先创建了一个 MyDialog 类继承了 JDialog,传入了一个 JFrame 实例(parent)作为参数。在构造函数中创建了一个包含一个标签和一个确定按钮的 JDialog。确定按钮被创建为 ActionCommand 为“OK”的 JDialog,然后添加 ActionListener 来监听按钮的点击事件。最后创建了一个 MyDialog 实例,并将其显示在 JFrame 中。

示例图:

 

以上三个示例展示了 JFrame、JPanel 和 JDialog 组件的基本用法,它们被广泛用于 Swing 应用程序中。当然,Swing 还有其他的组件和容器,可以根据自己的需求选择使用。

示例四:实战:编写一个可以生成密码加密的程序

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

/**
 * @author: Ajie
 * @create: 2023/6/21
 * @Description:
 * @FileName: PasswordEncrypter
 * @History:
 * @自定义内容:
 */
public class PasswordEncrypter extends JFrame {

    private JTextField passwordField; // 密码输入文本框
    private JTextArea resultArea; // 输出文本区域

    public PasswordEncrypter() {
        // 调用JFrame构造函数,设置窗口标题
        super("密码加密程序");

        // 创建文本框和标签
        JLabel passwordLabel = new JLabel("请输入密码:");
        // 修改输入标签的字体
        Font font2 = new Font("微软雅黑", Font.PLAIN, 30);  //设置字体及大小
        passwordLabel.setFont(font2);

        passwordField = new JTextField(20); // 创建密码输入文本框

        // 修改输入框的大小和字体
        Font font = new Font("微软雅黑", Font.PLAIN, 25);  //设置字体及大小
        passwordField.setPreferredSize(new Dimension(1400, 100));
        passwordField.setFont(font);

        // 创建按钮
        JButton encryptButton = new JButton("加密");
        Font font3 = new Font("微软雅黑", Font.PLAIN, 40);  //设置字体及大小
        encryptButton.setFont(font3);

        encryptButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                // 获取输入密码并进行加密
                String password = passwordField.getText();
                String encrypted = encrypt(password);

                // 在文本框中显示输出结果
                resultArea.setText(encrypted);
            }
        });

        // 创建文本区域
        resultArea = new JTextArea(5, 20);
        resultArea.setLineWrap(true);  // 启用自动换行
        resultArea.setWrapStyleWord(true);

        // 修改输入框的大小和字体
        Font font1 = new Font("微软雅黑", Font.PLAIN, 25);  //设置字体及大小
        resultArea.setPreferredSize(new Dimension(1400, 500));
        resultArea.setFont(font1);

        // 使用 GridBagLayout 布局,设置组件大小和位置
        JPanel panel = new JPanel(new GridBagLayout());
        GridBagConstraints c = new GridBagConstraints();

        c.insets = new Insets(10, 10, 10, 10);
        c.gridx = 0;
        c.gridy = 0;
        c.weightx = 0;
        panel.add(passwordLabel, c);

        c.gridx = 1;
        c.gridy = 0;
        c.weightx = 1.0;
        c.fill = GridBagConstraints.HORIZONTAL;
        panel.add(passwordField, c);

        c.gridx = 0;
        c.gridy = 1;
        c.gridwidth = 2;
        c.weighty = 1.0;
        c.fill = GridBagConstraints.BOTH;
        panel.add(resultArea, c);

        c.gridx = 0;
        c.gridy = 2;
        c.gridwidth = 2;
        c.weighty = 0;
        c.fill = GridBagConstraints.NONE;
        panel.add(encryptButton, c);

        // 设置整体窗口大小为1500*900
        setPreferredSize(new Dimension(1500, 900));
        // 最大化显示
        // setExtendedState(JFrame.MAXIMIZED_BOTH);

        // 把面板添加到窗口中
        setContentPane(panel);
        pack();
        setLocationRelativeTo(null); // 让窗口显示在屏幕中间
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setVisible(true);
    }

    // 加密函数,这里只是简单地把密码加上了一个后缀
    private String encrypt(String password) {
        // 在这里编写加密代码
        return password+"加密完成";
    }

    public static void main(String[] args) {
        new PasswordEncrypter();
    }

}

示例图:

这个程序使用 JFrame 创建了一个窗口,并添加了一个密码输入框、一个文本标签、一个按钮和一个文本区域。当用户在密码框中输入密码并单击按钮时,程序会模拟加密该密码,然后在文本区域中显示输出结果。

在 JFrame 的构造函数中,我们使用 GridBagLayout 布局管理器来设置输入框、标签、按钮和文本区域的位置和大小。在添加这些组件之后,我们添加了一个组件监听器,以便在窗口大小发生变化时更新组件大小。在 componentResized 方法中,我们获取了窗口的大小,并设置了输入框和输出区域的大小。

在这个程序中,我们还提供了一个模拟加密方法,以便在用户单击按钮时对密码进行加密。此外,在组件监听器中,我们使用 setPreferredSize 方法来更新输入框和输出区域的大小,并在每次更新后重新打包窗

将程序打成jar包本地运行操作

敬请期待!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/671956.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

OpenStack(1)-创建实例

目录 一、上传镜像 1.1 新建目录 1.2 上传至glance 1.3 查看镜像 二、新建实例 2.1 获取秘钥 2.2 新建实例 2.3 新建实例admin-vm 2.4 获取实例VNC的url 2.5 nova常用命令 一、上传镜像 1.1 新建目录 上传名为cirros-0.3.4-x86_64-disk.img的Linux测试镜像&#xf…

JdbcTemplate 数据访问工具

文章目录 前言JdbcTemplate 数据访问工具1. 概述2. 主要功能3. 示例 前言 如果您觉得有用的话,记得给博主点个赞,评论,收藏一键三连啊,写作不易啊^ _ ^。   而且听说点赞的人每天的运气都不会太差,实在白嫖的话&…

新时代的黑科技:就凭这个,还真就非JNPF低代码不可了

随着技术的不断进步,现代企业对软件开发的需求越来越迫切,传统的软件开发方式已无法满足快速迭代和创新的需求。在这种情况下,低代码开发平台应运而生。低代码开发平台通过提供可视化的开发工具和预构建的组件,大大加快了应用程序…

Docker的安装部署以及配置的操作流程(图文)

Docker的安装以及配置流程(图文) Docker一、配置域名解析二、CentOS Docker 安装1. 查询已安装的docker2. 安装必要的一些系统工具3. 添加软件源(阿里云)信息4. 更新并安装Docker-CE5. 查看docker 的版本6. 关闭运行的防火墙7. 开…

CMake 工程实践指南专栏介绍

CMake 工程实践指南专栏介绍 大家好,我是 eg,欢迎来到我的 CMake 工程实践指南专栏。本专栏会保持一周一更的节奏,带大家从一个 CMake 小白蜕变成 CMake 熟练使用者。 1. 我与 CMake 的故事 在正式内容开始之前,我想谈谈我和 CMake 的故事。我读书的时候是压根儿不知道 …

造手机、“+ AI”,掉队的蔚来瞎折腾?

对标豪华品牌BBA,自建换电站,蔚来汽车曾凭借先发优势,一度成为造车新势力的领头羊,但最近两个月,蔚来的单月交付量仅有6000多台,渐露掉队之相。 主业低迷,蔚来传出新消息。两天前,工…

c++lambda函数笔记

1、labmda函数用途: 用于简短功能函数的定义,并传递到std算法中。 2、一般函数与lambda函数比较示例 3、如何定义lambda 如下为lambda通用定义式子: [capture] (params) opt->ret{body;}; capture——捕获列表,[]为不捕获变量…

JAVA线程池submit详解 ,execute和submit提交任务的区别

文章目录 前言submit方法定义Future是什么execute、submit方法区别是什么submit主干流程逻辑newTaskFor做了什么FutureTasknewTaskFor(Runnable runnable, T value)的实现FutureTask(Callable<V> callable)的实现execute(ftask) FutureTask是如何实现线程池执行可获取返回…

java多线程简明笔记(5)线程礼让 yield

关键字&#xff1a;yield 官方文档就不说了&#xff0c;简单理解&#xff0c;礼让 线程礼让 yield正在执行的线程暂停&#xff0c;不阻塞 示例代码&#xff1a; public class ThreadTest7 implements Runnable{public static void main(String[] args) {ThreadTest7 tnew Th…

在线广告业务流程

一、业务流程 1、注册/登录 广告主登录系统&#xff0c;进行基本的鉴权&#xff0c;角色分配&#xff0c;账户管理。同时为营销参与者包括产品、运营、销售等提供登录、附身功能。 2、代理开户 & 订单合同管理 代理商可代理广告主开户&#xff0c;客户同样统一维护在用户…

帮你解锁 Android 性能优化五大误区和两大疑点!

近年来&#xff0c;社区充斥着关于 Android 性能优化的各种误区&#xff0c;本文本着误区终结者的精神&#xff0c;使用具体的性能检测工具&#xff0c;结合真实案例仔细分析这些情况&#xff0c;并对比它们的测试结果&#xff0c;也会聚焦 Android 开发者平时在编码过程的实际…

【CV 向】OpenCV 图形绘制指南

文章目录 引言1. 创建画布2. 绘制线段3. 绘制矩形4. 绘制圆5. 绘制椭圆6. 绘制多边形7. 绘制字体结论 引言 Python OpenCV 是一个功能强大的计算机视觉库&#xff0c;除了图像处理和计算机视觉任务外&#xff0c;它还提供了丰富的功能来绘制各种图形。无论是在计算机视觉应用中…

基于ChatGPT的端到端语音聊天机器人项目实战(三)

企业级ChatGPT开发入门实战 第1课 基于ChatGPT的端到端语音聊天机器人项目实战 Gavin老师:NLP_Matrix_Space 1.4 使用FastAPI构建语音聊天机器人后端实战 在后端代码(backend)中调用了OpenAI API及其他的服务,如图1-10所示。 图1- 10 后端代码调用OpenAI API openai_requ…

一条SQL语句的前世今生

文章目录 MySQL 基础架构分析语句分析查询语句更新语句 总结 本篇文章会分析下一个 SQL 语句在 MySQL 中的执行流程&#xff0c;包括 SQL 的查询在 MySQL 内部会怎么流转&#xff0c;SQL 语句的更新是怎么完成的。 MySQL 基础架构分析 下图是 MySQL 的一个简要架构图&#xff…

Move Dev Meetup杭州线下交流会圆满结束

北京时间6月17日下午2点到6点&#xff0c;由MoveFuns DAO 、MoveBit、ComingChat、杭州时戳微蓝信息咨询有限公司和WEB3CN联合举办的Move开发者线下交流会圆满结束。本次交流会吸引了110余名Move开发者报名&#xff0c;其中超过60位参会者成功来到现场参与了线下交流。 第一位分…

Python在不同领域中的应用

Python 是一种功能强大且易于使用的编程语言&#xff0c;因此在各个领域都有广泛的应用。以下是 Python 在不同领域中的应用&#xff1a; 数据科学&#xff1a;Python 是数据科学家和机器学习专家的首选工具之一。它有成熟的数据分析库和工具包&#xff0c;如 Pandas、NumPy、S…

逻辑回归模型的简介及python代码实现

文章目录 1 逻辑回归简介1.1 回归步骤1.2 逻辑回归与多重线性回归 2 逻辑回归模型算法原理2.1 逻辑回归模型的数学原理2.2 逻辑回归模型的代码实现2.3 逻辑回归模型的深入理解2.4 多分类逻辑回归模型演示 总结 1 逻辑回归简介 逻辑回归是分类当中极为常用的手段&#xff0c;它…

(六)关于Linux中服务器磁盘爆满问题的几个解决方案

文章目录 一、现象二、现象产生的原因三、问题的定位过程1.检查业务文件存放位置是否合理2.检查服务器系统盘空间是否分配过小3.对服务器磁盘占用情况进行分析4.若以上方案都解决不了内存占用过高问题&#xff0c;则考虑是否是服务器中存在其他容器产生了一些文件&#xff0c;比…

【使用Hystrix实现服务容错和熔断】—— 每天一点小知识

&#x1f4a7; 使用 H y s t r i x 实现服务容错和熔断 \color{#FF1493}{使用Hystrix实现服务容错和熔断} 使用Hystrix实现服务容错和熔断&#x1f4a7; &#x1f337; 仰望天空&#xff0c;妳我亦是行人.✨ &#x1f984; 个人主页——微风撞见云的博客&#x1f390…

进程、线程、协程?go中的协程原理详解 - 协程是什么?为什么要有协程?

1. 为什么要有协程&#xff1f; 我们使用工厂来表示计算机&#xff0c;而内存空间就相当于工厂的地皮&#xff0c;那么我们可以认为进程就是工厂中的厂房&#xff0c;它占据了工厂的地皮。&#xff08;进程是分配资源的最小单位&#xff09; 线程是什么呢&#xff1f;我们继续…