Java初学日记 十三 (GUI)

GUI编程

概述

GUI(Graphical Uers Interface)全称图形用户界面

swing指javax.swing包,该包中包含实现界面的类,这些类都可称为组件

组件可分为两大类:

容器组件

窗口
import javax.swing.*;
​
public class LoginFrame extends JFrame {//在构造方法中对窗口进行设置public LoginFrame(){//设置窗口大小this.setSize(300,300);
​//设置窗口标题this.setTitle("登录");
​
//        //设置窗口生成位置
//        this.setLocation(600,250);
​//设置窗口生成位置水平居中this.setLocationRelativeTo(null);
​//设置窗口不可调整大小this.setResizable(false);
​//关闭窗口选项//JFrame.EXIT_ON_CLOSE-->关闭窗口时程序停止运行this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
​//显示窗口,一般在完成设置后在最后一行this.setVisible(true);}
​public static void main(String[] args) {//创建一个窗口new LoginFrame();}
}
面板

轻量级的容器,可以布局-->流式布局、边界布局、网格布局...

import javax.swing.*;
import java.awt.*;
​
//面板的流式布局
​
public class LoginFrame3 extends JFrame{
​//在构造方法中对窗口进行设置public LoginFrame3(){//设置窗口大小this.setSize(300,300);
​//设置窗口标题this.setTitle("登录");
​//自定义设置窗口生成位置//this.setLocation(600,250);
​//设置窗口生成位置水平居中this.setLocationRelativeTo(null);
​//设置窗口不可调整大小this.setResizable(false);
​//关闭窗口选项//JFrame.EXIT_ON_CLOSE-->关闭窗口时程序停止运行this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
​/*面板可以设置布局管理器流式布局:组件从面板上从左到右排列,满时换行*/
​//创建面板  流式布局-->默认水平居中,上下左右5个像素间距JPanel jPanel = new JPanel(new FlowLayout());//流式布局-->水平居左//JPanel jPanel = new JPanel(new FlowLayout(FlowLayout.LEFT));////JPanel jPanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
​//创建功能组件-->按钮组件JButton jButton1 = new JButton("进 入");JButton jButton2 = new JButton("进 入");JButton jButton3 = new JButton("进 入");
​//把组件添加到面板上jPanel.add(jButton1);jPanel.add(jButton2);jPanel.add(jButton3);
​
​//把面板添加到窗口上this.add(jPanel);
​//显示窗口,一般在完成设置后在最后一行this.setVisible(true);}
​public static void main(String[] args) {//创建一个窗口new LoginFrame3();}
}
​
import javax.swing.*;
import java.awt.*;
​
//面板的边界布局
​
public class LoginFrame4 extends JFrame{
​//在构造方法中对窗口进行设置public LoginFrame4(){//设置窗口大小this.setSize(300,300);
​//设置窗口标题this.setTitle("登录");
​//自定义设置窗口生成位置//this.setLocation(600,250);
​//设置窗口生成位置水平居中this.setLocationRelativeTo(null);
​//设置窗口不可调整大小this.setResizable(false);
​//关闭窗口选项//JFrame.EXIT_ON_CLOSE-->关闭窗口时程序停止运行this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
​/*面板可以设置布局管理器边界布局:NORTHWESTCENTER-->必须有EASTSOUTH*/
​//创建面板  边界布局JPanel jPanel = new JPanel(new BorderLayout());
​//创建功能组件-->按钮组件JButton jButton1 = new JButton("进 入1");JButton jButton2 = new JButton("进 入2");JButton jButton3 = new JButton("进 入3");JButton jButton4 = new JButton("进 入4");JButton jButton5 = new JButton("进 入5");
​//把组件添加到面板上jPanel.add(jButton1,BorderLayout.NORTH);jPanel.add(jButton2,BorderLayout.WEST);jPanel.add(jButton3,BorderLayout.CENTER);//居中jPanel.add(jButton4,BorderLayout.EAST);jPanel.add(jButton5,BorderLayout.SOUTH);
​
​//把面板添加到窗口上this.add(jPanel);
​//显示窗口,一般在完成设置后在最后一行this.setVisible(true);}
​public static void main(String[] args) {//创建一个窗口new LoginFrame4();}
}
import javax.swing.*;
import java.awt.*;
​
//面板的网格布局
​
public class LoginFrame5 extends JFrame{
​//在构造方法中对窗口进行设置public LoginFrame5(){//设置窗口大小this.setSize(300,300);
​//设置窗口标题this.setTitle("登录");
​//自定义设置窗口生成位置//this.setLocation(600,250);
​//设置窗口生成位置水平居中this.setLocationRelativeTo(null);
​//设置窗口不可调整大小this.setResizable(false);
​//关闭窗口选项//JFrame.EXIT_ON_CLOSE-->关闭窗口时程序停止运行this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
​/*面板可以设置布局管理器网格布局*/
​//创建面板  网格布局JPanel jPanel = new JPanel(new GridLayout(2,1));
​//创建功能组件-->按钮组件JButton jButton1 = new JButton("进 入1");JButton jButton2 = new JButton("进 入2");JButton jButton3 = new JButton("进 入3");JButton jButton4 = new JButton("进 入4");JButton jButton5 = new JButton("进 入5");
​//把组件添加到面板上jPanel.add(jButton1);jPanel.add(jButton2);jPanel.add(jButton3);jPanel.add(jButton4);jPanel.add(jButton5);
​//把面板添加到窗口上this.add(jPanel);
​//显示窗口,一般在完成设置后在最后一行this.setVisible(true);}
​public static void main(String[] args) {//创建一个窗口new LoginFrame5();}
}
​

对话框
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
​
public class Module4 extends JFrame{public Module4(){this.setSize(300,300);this.setTitle("");this.setLocationRelativeTo(null);this.setResizable(true);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
​JPanel jPanel = new JPanel(new FlowLayout());
​JButton jButton = new JButton("哈哈");jPanel.add(jButton);
​this.add(jPanel);this.setVisible(true);
​jButton.addActionListener(new ActionListener() {@Override//对话框public void actionPerformed(ActionEvent e) {//JOptionPane.showMessageDialog(null, "哈哈");//JOptionPane.showMessageDialog(null, "哈哈","哈哈",JOptionPane.WARNING_MESSAGE);//JOptionPane.showMessageDialog(null, "哈哈","哈哈",JOptionPane.INFORMATION_MESSAGE);//JOptionPane.showMessageDialog(null, "哈哈","哈哈",JOptionPane.QUESTION_MESSAGE);//JOptionPane.showMessageDialog(null, "哈哈","哈哈",JOptionPane.ERROR_MESSAGE);
​//选择对话框  是0  否1  取消2int num = JOptionPane.showConfirmDialog(null, "哈哈");System.out.println(num);//是0  取消2int num = JOptionPane.showConfirmDialog(null, "哈哈","哈哈",JOptionPane.OK_CANCEL_OPTION);System.out.println(num);
​//输入对话框String str = JOptionPane.showInputDialog(null,"哈哈");System.out.println(str);}});}
​public static void main(String[] args) {//创建一个窗口new Module4();}
}
​

功能组件

按钮
import javax.swing.*;
import java.awt.*;
​
//添加面板
​
public class LoginFrame2 extends JFrame{
​//在构造方法中对窗口进行设置public LoginFrame2(){//设置窗口大小this.setSize(300,300);
​//设置窗口标题this.setTitle("登录");
​//自定义设置窗口生成位置//this.setLocation(600,250);
​//设置窗口生成位置水平居中this.setLocationRelativeTo(null);
​//设置窗口不可调整大小this.setResizable(false);
​//关闭窗口选项//JFrame.EXIT_ON_CLOSE-->关闭窗口时程序停止运行this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
​//创建面板JPanel jPanel = new JPanel();jPanel.setBackground(Color.CYAN);//自定义颜色jPanel.setBackground(new Color(157, 253, 150, 255));
​//创建功能组件-->按钮组件JButton jButton = new JButton("进 入");
​//把组件添加到面板上jPanel.add(jButton);
​//把面板添加到窗口上this.add(jPanel);
​//显示窗口,一般在完成设置后在最后一行this.setVisible(true);}
​public static void main(String[] args) {//创建一个窗口new LoginFrame2();}
}
​

菜单
import javax.swing.*;
import java.awt.*;
​
public class Module3 extends JFrame{public Module3(){this.setSize(500,500);this.setTitle("记事本");this.setLocationRelativeTo(null);this.setResizable(true);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
​//创建菜单栏JMenuBar jMenuBar = new JMenuBar();//把菜单栏添加到窗口上this.setJMenuBar(jMenuBar);
​//创建菜单JMenu jMenu1 = new JMenu("文件");JMenu jMenu2 = new JMenu("编辑");JMenu jMenu3 = new JMenu("帮助");
​//创建菜单选项JMenuItem jMenuItem1 = new JMenuItem("新建");JMenuItem jMenuItem2 = new JMenuItem("保存");JMenuItem jMenuItem3 = new JMenuItem("关于");
​jMenu1.add(jMenuItem1);jMenu2.add(jMenuItem2);jMenu3.add(jMenuItem3);
​jMenuBar.add(jMenu1);jMenuBar.add(jMenu2);jMenuBar.add(jMenu3);
​JPanel jPanel = new JPanel(new FlowLayout());this.add(jPanel);this.setVisible(true);}
​public static void main(String[] args) {//创建一个窗口new Module3();}
}
 
输入框
import javax.swing.*;
import java.awt.*;
​
public class Module1 extends JFrame{public Module1(){this.setSize(300,300);this.setTitle("");this.setLocationRelativeTo(null);this.setResizable(true);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
​JPanel jPanel = new JPanel(new FlowLayout());
​//标签组件JLabel jLabelZh = new JLabel("账号");//设置名字//jLabel.setText();//设置字体jLabelZh.setFont(new Font("楷体",Font.BOLD,15));
​//输入框组件JTextField jTextField = new JTextField(20);//获得输入框内容jTextField.getText();
​
​JLabel jLabelMm = new JLabel("密码");jLabelMm.setFont(new Font("楷体",Font.BOLD,15));//密码框JPasswordField jPasswordField = new JPasswordField(20);
​//获得密码框内容String str = new String(jPasswordField.getPassword());
​jPanel.add(jLabelZh);jPanel.add(jTextField);jPanel.add(jLabelMm);jPanel.add(jPasswordField);
​this.add(jPanel);this.setVisible(true);}
​public static void main(String[] args) {//创建一个窗口new Module1();}
}
 

事件处理

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
​
public class Module3 extends JFrame{public Module3(){this.setSize(500,500);this.setTitle("记事本");this.setLocationRelativeTo(null);this.setResizable(true);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
​//创建菜单栏JMenuBar jMenuBar = new JMenuBar();//把菜单栏添加到窗口上this.setJMenuBar(jMenuBar);
​//创建菜单JMenu jMenu1 = new JMenu("文件");JMenu jMenu2 = new JMenu("编辑");JMenu jMenu3 = new JMenu("帮助");
​//创建菜单选项JMenuItem jMenuItem1 = new JMenuItem("新建");JMenuItem jMenuItem2 = new JMenuItem("保存");JMenuItem jMenuItem3 = new JMenuItem("关于");
​jMenu1.add(jMenuItem1);jMenu2.add(jMenuItem2);jMenu3.add(jMenuItem3);
​jMenuBar.add(jMenu1);jMenuBar.add(jMenu2);jMenuBar.add(jMenu3);
​JTextField jTextField = new JTextField(20);JPanel jPanel = new JPanel(new FlowLayout());jPanel.add(jTextField);
​JButton jButton = new JButton("保存");jPanel.add(jButton);
​this.add(jPanel);this.setVisible(true);
​//事件处理,为组件添加监听//匿名内部类jMenuItem3.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {System.out.println("记事本VT.1.0.001");}});
​//按钮和输入框jButton.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {String str = jTextField.getText();if (str.length() == 0){//对话框组件JOptionPane.showMessageDialog(null, "账号为空!");return;}}});
​//输入框添加事件监听jTextField.addKeyListener(new KeyAdapter() {@Overridepublic void keyReleased(KeyEvent e) {System.out.println(jTextField.getText());}});
​}
​public static void main(String[] args) {//创建一个窗口new Module3();}
}
 

内部类

public class A {private int num = 10;
​/*内部类在一个类的内部定义的类类B只服务于类A,其他类用不到
​1.内部类可以直接访问外部类的成员2.内部类只服务于当前外部类*/
​public class B{public void show(){System.out.println(num);}}
​public static void main(String[] args) {}
}
​

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

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

相关文章

深入理解与运用Vue 2中的插槽(Slots)

深入理解与运用Vue 2中的插槽(Slots) Vue.js作为一种强大的前端框架,以其组件化、声明式编程理念深受开发者喜爱。其中,Vue 2的插槽(Slots)机制更是极大地提升了组件复用性和灵活性。本文将深入探讨Vue 2中…

FreeSWITCH 1.10.10 简单图形化界面15 - JsSIP媒体控制(LookLook)

FreeSWITCH 1.10.10 简单图形化界面15 - JsSIP媒体控制 0、 界面预览1、本地媒体流获取session本地音频本地视频 2、远端媒体流获取媒体流远端音频远端视频 FreeSWITCH界面安装参考:https://blog.csdn.net/jia198810/article/details/137820796 0、 界面预览 http…

Robbins-Monro(RM)算法【随机近似】

强化学习笔记 主要基于b站西湖大学赵世钰老师的【强化学习的数学原理】课程,个人觉得赵老师的课件深入浅出,很适合入门. 第一章 强化学习基本概念 第二章 贝尔曼方程 第三章 贝尔曼最优方程 第四章 值迭代和策略迭代 第五章 强化学习实践—GridWorld 第…

WP-AutoPostPro 汉化版: WordPress自动采集发布插件

WP-AutoPostPro 是目前最好用的WordPress自动采集发布插件,最大的特点是可以采集来自于任何网站的内容并自动发布到你的WordPress站点。真正做到可以采集任何网站的内容并自动发布,采集过程完全自动进行无需人工干预,并提供内容过滤、HTML标签…

libssh C++封装(一)

1 概述 libssh是一个在客户端和服务器端实现SSHv2协议的多平台C库。使用libssh,您可以远程执行程序、传输文件、使用安全透明的隧道、管理公钥等等。本文描述的对libssh客户端功能的C封装。 libssh下载地址 2 设计 2.1 类图 类型说明: Session SSH连接…

【设计模式】9、facade 外观模式

文章目录 九、外观模式9.1 player9.1.1 player_test.go9.1.2 player.go 9.2 login_register9.2.1 account_test.go9.2.2 account.go 九、外观模式 https://refactoringguru.cn/design-patterns/facade 如果有一个复杂的系统, 内部有很多子系统, 可以用 facade 封装一层, 只暴…

WPF-关于动画Animation(及其常见问题)

目录 一、动画合集 常见动画类型 1、资源里添加动画资源 2、事件触发器里开始一个动画 3、Double型关键帧动画 4、Object型关键帧动画 5、Color型关键帧动画 6、String型关键帧动画 7、Matrix型沿路径动画 二、扩展 Ⅰ 动画常见问题 1、控制动画结束问题 Ⅱ 流动…

Centos7 的 Open Stack T 版搭建流程 --- (三)配置消息队列

配置消息队列 文章目录 配置消息队列(1)安装 RabbitMQ 服务并配置新用户权限controller (2)如何开启图形化(拓展) (1)安装 RabbitMQ 服务并配置新用户权限 controller yum install…

1115: 【C2】【字符串】【入门】最长最短单词

题目描述 输入1行句子(不多于200个单词,每个单词长度不超过100),只包含字母、空格和逗号。单词由至少一个连续的字母构成,空格是单词间的间隔。 试输出第1个最长的单词和第1个最短单词。 输入 一行句子。 输出 两…

天星金融消保课堂开讲,金融健康意识再提升

近年来,随着消费者对投资理财等金融服务需求的日益增长,金融广告成为消费者获取金融信息的重要途径。然而,一些不法分子通过投放非法金融广告,诱导消费者参与非法金融活动,给消费者的权益带来了严重威胁。为此&#xf…

开源AI智能名片源码:虚实融合引领品牌营销新篇章

随着数字时代的飞速发展,品牌营销已经步入了一个全新的纪元。在这个变革的时代,开源AI智能名片源码以其独特的虚实融合功能,正引领着品牌营销走向更加智能化、个性化的道路。 传统的品牌营销往往局限于单向的信息传播,难以与用户产…

成都污水处理站运维厂家服务商

选择污水处理运维服务厂家时,需要考虑以下几个关键的事项来确保您选择了合适的服务提供商: 1. **资质和认证:** 确认厂家是否具备国家或地方政府颁发的相关环保和水处理行业资质、证书,比如ISO认证、水污染治理资质等,…

Nacos服务注册中心的下载与使用

1. Nacos是什么? https://nacos.io/ 官方:一个更易于构建云原生应用的动态服务发现(Nacos Discovery )、服务配置(Nacos Config)和服务管理平台。 集 注册中心配置中心服务管理 平台 Nacos 的关键特性包括: 服务发现和服务健康监测 动态配置服务 动…

手写一个Spring IOC框架

目录 一,Spring IOC 二,流程图设计 三,设计思路解析 三,开始写代码 1.准备工作: 2.扫描并加载类信息 3.初始化bean 4.测试一下 一,Spring IOC Spring IoC容器是Spring框架的核心,它通过读取配置信息…

Scala 复习笔记

元组: 元素类型一致 存取有序可重复 Seq ​ 无序不可重复 Set ​ 键值对 Map (存储的就是Tuple2 ,对偶元组) 元素类型不一致 Tuple (至多22个元素) 代码: 定义 拆分 函数返回元组类型 遍历…

【每日刷题】Day20

【每日刷题】Day20 🥕个人主页:开敲🍉 🔥所属专栏:每日刷题🍍 🌼文章目录🌼 1. 面试题 17.04. 消失的数字 - 力扣(LeetCode) 2. 189. 轮转数组 - 力扣&#…

随机森林(Random Forests)

通过5个条件判定一件事情是否会发生,5个条件对这件事情是否发生的影响力不同,计算每个条件对这件事情发生的影响力多大,写一个随机森林(Random Forests)模型程序,最后打印5个条件分别的影响力。 ChatGPT 下面是一个使…

后端获取请求体Body,将请求体进行解密放回Request请求,并能通过@RequestBody获取

目前系统发送的post和put请求都是没有加密数据。客户需要将请求体加密。而系统已经基本开发完成,不可能一个一个去修改发送的请求。就需要在发送请求时候在拦截器中将body进行加密。并且在后端进行请求过滤解密,并且能通过RequestBody继续获取对象。 1.…

matlab学习004-使用matlab绘制两个序列及信号的卷积波形图

目录 1,序列:x(n)u(n-2)-u(n-10),h(n)((0.9)^n)*u(n) 1)前期基础 ①conv函数 ②离散单位阶跃信号 2)波形图 3)代码 ①使用input方法 ②代码改进【推荐使用】 2,信号:xu(…

C语言趣味代码(二)

1.珠玑妙算 1.1 介绍 《珠玑妙算》(Mastermind)是英国Invicta公司于1973年开始销售的一款益智游戏,据说迄今为止已经在全世界销售了5000万套。《珠玑妙算》于1974年获奖后,在1975年传入美国,1976年leslieH.Autl博士甚至还出版了一本名为The…