Java初学日记 十三 (GUI)

ops/2024/9/25 10:34:03/

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/ops/8714.html

相关文章

Android活动之Intent

Intent Intent是Android程序中各组件之间进行交互的一种重要方式,它不仅可以指明当前组件想要执行的动作,还可以在不同组件之间传递数据。Intent一般可被用于启动活动、启动服务以及发送广播等场景, 显示intent 第一个参数Context要求提供…

RestClient操作Elasticsearch(Java)

Es官方提供了各种不用语言的客户端,用来操作Es,这些客户端的本质就是组装DSL语句,通过http请求发送给Es,从而简化操作 es基础篇不熟悉参考一下博客:ElasticSearch入门篇-CSDN博客文章浏览阅读445次,点赞7次…

宝塔面板使用docker+nginx+gunicorn部署Django项目实战教程

第一步:创建Django项目 使用pip install django安装创建django项目的依赖在电脑某个根目录下执行django-admin startproject app创建一个名为app的Django项目。目录结构如下: ├── app │ ├── init.py │ ├── asgi.py │ ├── settings.py │ ├── url…

从零开始写一个RTSP服务器(三)RTP传输H.264

目录 一、RTP封装1.1 RTP数据结构1.2 源码 二、H.264的RTP打包2.1 H.264格式2.2 H.264的RTP打包方式2.3 H.264 RTP包的时间戳计算2.4 源码 三、H.264 RTP打包的sdp描述四、测试 本篇文章目标,使用vlc打开sdp文件后,可以观看到视频数据 一、RTP封装 1.1 …

ai智能电话机器人是如何自主学习的

电话机器人的出现,帮助很多传统电销行业企业进入新的发展阶段。它主要通过语音识别和针对语意的理解识别客户所说的内容,针对性的回答问题,为企业高效筛选意向客户。除了电话机器人语音识别之外,电话机器人能够自主学习&#xff0…

python创建sqlite,并使用flask-sqlalchemy连接

python创建sqlite,并使用flask-sqlalchemy连接 在 PyCharm 中,你可以使用 SQLite 数据库来存储数据。以下是在 PyCharm 中使用 SQLite 数据库并通过 Flask-SQLAlchemy 连接它的步骤: 1. 在 PyCharm 中创建 SQLite 数据库 打开 PyCharm&…

微服务:Eureka原理实践:@EnableEurekaServer、@LoadBalanced

个人简介:Java领域新星创作者;阿里云技术博主、星级博主、专家博主;正在Java学习的路上摸爬滚打,记录学习的过程~ 个人主页:.29.的博客 学习社区:进去逛一逛~ 微服务:Eureka原理实践&#xff1a…

技术速递|为 .NET iOS 和 .NET MAUI 应用程序添加 Apple 隐私清单支持

作者:Gerald Versluis 排版:Alan Wang Apple 正在推出一项隐私政策,将隐私清单文件包含在针对 App Store 上的 iOS、iPadOS 和 tvOS 平台的新应用程序和更新应用程序中。请注意,至少目前 macOS 应用程序被排除在外。 隐私清单文件…