Java初学日记 十三 (GUI)

server/2024/9/20 4:00:07/ 标签: java, python, 开发语言

GUI编程

概述

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

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

组件可分为两大类:

容器组件

窗口
java">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();}
}
面板

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

java">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();}
}
​
java">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();}
}
java">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();}
}
​

对话框
java">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();}
}
​

功能组件

按钮
java">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();}
}
​

菜单
java">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();}
}
 
输入框
java">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();}
}
 

事件处理

java">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();}
}
 

内部类

java">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.ppmy.cn/server/8764.html

相关文章

@Autowired和@Resource

Spring支持使用@Autowired、 @Resource、@Inject三个注解进行依赖注入。 @Component(“id”) id可选,告诉spring这是一个组件,交由spring管理, 相当于xml当中的<bean>配置。 @Autowired 默认按类型进行装配(该注解由spring提供,org.springframework.beans.factory.…

恒峰智慧科技—森林防火卡口,安全宣传不放松!

随着夏季高温的来临&#xff0c;森林火灾的隐患也在逐渐加大。在这个关键时刻&#xff0c;我们必须提高警惕&#xff0c;以确保人们的生命财产安全&#xff0c;并保护我们的绿色家园。为此&#xff0c;太阳能远程4G警示监控系统应运而生&#xff0c;它将为我们提供一个有效的工…

JavaScript之模块化规范详解

文章的更新路线&#xff1a;JavaScript基础知识-Vue2基础知识-Vue3基础知识-TypeScript基础知识-网络基础知识-浏览器基础知识-项目优化知识-项目实战经验-前端温习题&#xff08;HTML基础知识和CSS基础知识已经更新完毕&#xff09; 正文 CommonJS、UMD、CMD和ES6是不同的模块…

第十五届蓝桥杯c++b组赛后复盘和真题展示

题目变成八道了&#xff0c;分数一百分可能&#xff0c;感觉拿奖难度还是很高 第一题是一个简单的握手问题 答案算出来1204&#xff0c;纯手写 第二题是 物理题 纯蒙&#xff0c;随便猜了个轨迹&#xff0c;答案具体忘了&#xff0c;最后是 .45 第三题暴力 第四题 我是傻逼…

消防乙级资质申请材料清单及准备技巧

材料清单 资质申请表&#xff1a;填写完整、准确的资质申请表格&#xff0c;通常需要在线填写并打印。 企业法人营业执照副本&#xff1a;复印并提供企业法人营业执照副本&#xff0c;确保信息与最新工商登记一致。 企业章程&#xff1a;提交企业章程&#xff0c;反映企业性质…

Linux操作系统·Linux简介

1.世界上第一个完善的网络操作系统 Unix是1969年由美国电话电报公司(AT&T)贝尔实验室的两个工程师所创造的操作系统&#xff0c;它允许计算机同时处理多用户和程序。目前大型政府单位、大型企业、航空公司、金融机构多在使用&#xff0c;价钱昂贵&#xff0c;但性能和稳定性…

全量知识系统 程序详细设计 定稿之 “祖传代码”:Preserving类+符号学 (QA百度搜索)

Q1. 今天继续聊 全量知识系统 程序详细设计 定稿- “祖传代码”。“祖传代码”表示全知系统的全部“可能的世界”&#xff1a;“Preserving”的一个 Phython Class 母版。“Preserving”类是 全知系统知识表征顶级范畴公理化 无上的&#xff08;topless&#xff09;重言式公理…

当Mac的hosts文件被永久锁定后的解锁方法

M3 2024新机器因为要下载一些插件包&#xff0c;需要修改hosts文件 按常规操作去修改hosts的访问权限时&#xff0c;却发现怎样也改变不了&#xff0c;在命令行方式下用sudo vim访问&#xff0c;保存时也提示异常 在网上找了一些资料&#xff0c;终于知道Mac的文件有永久锁定…

项目7-音乐播放器2(上传音乐+查询音乐+拦截器)

0.加入拦截器 之后就不用对用户是否登录进行判断了 0.1 定义拦截器 0.2 注册拦截器 生效 1.上传音乐的接口设计 请求&#xff1a; { post, /music/upload {singer&#xff0c;MultipartFile file}&#xff0c; } 响应&#xff1a; { "status": 0, "message&…

第三届 SWCTF-Web 部分 WP

写在前面 题目主要涉及的是前端 php 内容知识&#xff0c;仅以本篇博客记录自己 Web 出题的奇思妙想。 Copyright © [2024] [Myon⁶]. All rights reserved. 目录 1、HTTP 2、再见了晚星 3、myon123_easy_php 4、baby_P0P 5、LOGIN!!! 1、HTTP 首页文件默认就是 ind…

基于SpringBoot的在线五子连珠的设计与实现,前端采用vue框架;后端采用SpringBoot,mybatis

介绍 基于SpringBoot的在线五子连珠的设计与实现&#xff0c;主要是设计一款五子棋游戏&#xff0c;涉及登录注册的功能&#xff0c;人机对战、联机对战和积分排行榜的功能。其中人机对战中&#xff0c;电脑采用的是采用了一种基于局面分析的评分算法来确定机器人的下一步落子…

el-dialog 实现可以拖动的弹窗

实现可拖动弹窗。 一、在需要进行拖拽的弹窗组件添加如下代码 1.vue组件 el-dialog组件添加 v-el-drag-dialog 2.引入index 文件 import elDragDialog from ../index.js 3.引入指令 directives: {elDragDialog}, 二、index.js文件代码 ​ import drag from ./dragconst …

sql注入基础

数据库基础 数据库 : 管理多个数据表的集合 数据表&#xff1a;矩阵的方式存储数据&#xff0c;以表格显示 列&#xff1a;相同数据类型的数据集合 行&#xff1a;每一行描述某条记录的具体信息 键&#xff1a;键的值在当前列中有唯一 值&#xff1a;没个值必须和该列数据…

使用两台主机实现博客的搭建

1.运行环境 这里的主机IP是自己虚拟器的IP。 主机主机名系统服务192.168.179.128Server-WebLinuxWeb192.168.179.129Server-NFSDNSLinuxNFS/DNS 2.基础配置 1.配置主机名&#xff0c;静态IP地址 2.开启防火墙并配置 3.部分开启SElinux并配置 4.服务器之间使用同ntp.aliyun.com…

4.15 day6 ARM

uart.c #include "uart4.h" void uart4_config() {RCC->MP_AHB4ENSETR | (0X1 << 6);//&#xff27;RCC->MP_AHB4ENSETR | (0X1 << 1);//BRCC->MP_APB1ENSETR | (0X1 << 16);//UART4 //管脚复用GPIOG->MODER & (~(0X3 << …

安装zabbix server

目录 1、实验环境 2、yum 安装zabbix server 2.1 解决权限问题和放行流量 2.2 安装zabbix-server 1、实验环境 操作系统rhel8zabbix6.0TLS数据库mysql8.0.30IP地址192.168.81.131时间配置NTP时间服务器同步 2、yum 安装zabbix server 如果通过yum源安装&#xff0c;操作系…

企业监控员工电脑的软件分享,公司电脑监控软件有哪些

员工在使用电脑时可能会进行与工作无关的活动&#xff0c;如浏览社交媒体、玩游戏等。 也可能会在不知情的情况下访问恶意网站、下载含有病毒的文件&#xff0c;或者泄露敏感信息。 这些都可能对企业的信息安全构成严重威胁&#xff0c;因此企业会有监控员工电脑的想法。 一、…

冯唐成事心法笔记

文章目录 卷首语 管理是一生的日常&#xff0c;成事是一生的修行PART 1 知己 用好自己的天赋如何管理自我用好你的天赋成大事无捷径如何平衡工作和生活做一个真猛人做自己熟悉的行业掌控情绪如何对待妒忌和贪婪如何战胜自己&#xff0c;战胜逆境真正的高手都有破局思维有时候…

OpenHarmony实战开发-Grid和List内拖拽交换子组件位置。

介绍 本示例分别通过onItemDrop()和onDrop()回调&#xff0c;实现子组件在Grid和List中的子组件位置交换。 效果图预览 使用说明&#xff1a; 拖拽Grid中子组件&#xff0c;到目标Grid子组件位置&#xff0c;进行两者位置互换。拖拽List中子组件&#xff0c;到目标List子组件…

ChatGPT如何助力科研创新,提升研究效率?

随着人工智能技术的快速发展&#xff0c;其在科研领域的应用也愈发广泛。AI不仅提升了科研创新的效率&#xff0c;还为科研人员带来了前所未有的便利。本文将从ChatGPT深度科研应用、数据分析及机器学习、AI绘图以及高效论文撰写等方面&#xff0c;综述AI如何助力科研创新与效率…