Java--GUI编程
目录
GUI的概念
Swing概述
编辑
容器组件
布局管理器
常用组件
对话框
内部类
GUI的概念
GUI(Graphics User Interface),图形用户界面,是指采用图形方式显示的计算机操作用户界面,是计算机与其使用者之间的对话接口,是计算机系统的重要组成部分。它能够使应用程序看上去更加友好
Swing概述
* JFrame 窗口
* JPanel 面板(流式布局,边界布局,网格布局)
* JTextFiled 单行文本输入框
* JLable 标签
* JPasswordFiled 密码框组件
* JTextArea 多行文本输入框
* JScrollPane 滚动面板
容器组件
组件是一个以图形化的方式显示在屏幕上能够与用户进行交互的对象,不能独立显示,必须放在一定的容器中。
容器可容纳多个组件,用add方法添加组件进容器
窗口Frame和面板Panel是最常用的容器
JFrame(框架)
用于在Swing中创建窗体
通过get()方法就可以获得此框架的内容面板
或者自己创建一个JPanel面板对象,把它作为一个组件加到容器中
public class Demo1JFrame extends JFrame {public Demo1JFrame() throws HeadlessException {this.setSize(500, 300);//设置窗口的大小this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭窗口选项// this.setLocation(450,500);//位置坐标this.setResizable(false);//禁止设置窗口大小this.setLocationRelativeTo(null);//相对位置 水平垂直居中this.setTitle("欢迎登录");//窗口标题 this.setVisible(true);//显示窗口this.dispose();//关闭窗口}public static void main(String[] args) {Demo1JFrame d = new Demo1JFrame();}
}
JPanel(面板)
提供面板,是轻量级别的容器,一般使用面板来实现布局嵌套
//面板,可以看成是一个空间,但不能单独存在//流式布局JPanel jp = new JPanel();//默认是流式布局jp.setBackground(PINK);//设置背景颜色jp.setLayout();//设置页面布局this.add(jp);//将面板加入JFramethis.setVisible(true);//显示窗口
菜单组件JMenuBar();//创建菜单JMenu();//菜单名称
JMenuItem();//菜单项名称
setJMenuBar(menuBar);//将菜单栏添加到窗口
布局管理器
每个Jpanel 都有一个布局管理器
常用的布局管理器:流式布局,边界布局BorderLayout和网格布局GridLayout
//面板,可以看成是一个空间,但不能单独存在//流式布局JPanel jp = new JPanel();//默认是流式布局jp.setBackground(PINK);//设置背景颜色this.add(jp);//将面板加入JFramethis.setVisible(true);//显示窗口JButton jb = new JButton("登录");jp.add(jb);JPanel jp = new JPanel(new BorderLayout());//边界布局JButton jb1 = new JButton("登录1");JButton jb2 = new JButton("登录2");JButton jb3 = new JButton("登录3");jp.add(jb1, BorderLayout.EAST);jp.add(jb2, BorderLayout.SOUTH);jp.add(jb3);this.add(jp);this.setVisible(true);//显示窗口JPanel jp = new JPanel(new GridLayout(2, 2));//网格布局JButton jb1 = new JButton("登录1");JButton jb2 = new JButton("登录2");JButton jb3 = new JButton("登录3");JButton jb4 = new JButton("登录4");jp.add(jb1);jp.add(jb2);jp.add(jb3);jp.add(jb4);this.add(jp);
常用组件
JLabel(标签)
JLabel label = new JLabel("账号");label.setForeground(Color.PINK);//设置背景颜色label.setFont(new Font("宋体", Font.BOLD, 20));//设置字体
JTextField(单行文本)
JTextField accountText = new JTextField(15);accountText.setText("你好");
JTextArea(多行文本框)
JTextArea ja=new JTextArea(5,15);ja.setLineWrap(true);//自动换行
JScrollPane(滚动条)
JScrollPane js=new JScrollPane(ja);//滚动条
jp.add(js);
JPasswordField(密码框)
JPasswordField passwordField=new JPasswordField(15);passwordPanel.add(passwordLabel);passwordLabel.add(passwordField);
JButton(按钮)
JButton loginBtn=new JButton("登录");btnPanel.add(loginBtn);
菜单栏组件
JMenuBar jMenuBar=new JMenuBar();d.setJMenuBar(jMenuBar);JMenu jm = new JMenu("菜单");jMenuBar.add(jm);JMenuItem ji = new JMenuItem("文件");JMenuItem ji1 = new JMenuItem("保存");jm.add(ji);jm.add(ji1);
事件处理
当我们点击一个按钮时,或者用键盘输入字符,或者是点击鼠标时,我们应该如何处理这个事件。
事件监听:
jb.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {String account = null; }}
对话框
JOptionPane:
showMessageDialog(消息对话框)
消息类型:
ERROR_MESSAGE 错误消息提示
INFORMATION_MESSAGE 信息提示
WARNING_MESSAGE 警告提示
QUESTION_MESSAGE 问题提示
PLAIN_MESSAGE 简洁提示
showConfirmDialog(确认对话框)
DEFAULT_OPTION 默认选项
YES_NO_OPTION 是/否选项
YES_NO_CANCEL_OPTION 是/否/取消选项
OK_CANCEL_OPTION 确定/取消
jb.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {String account = null;if (account.length() > 10) {JOptionPane.showMessageDialog(null, "你好", "就是你", JOptionPane.QUESTION_MESSAGE);int res = JOptionPane.showConfirmDialog(null, "小朋友", "很能吃", JOptionPane.YES_NO_OPTION);System.out.println(res);if (res == 0) {return;}}
内部类
内部类是java对类的一种定义方式,是嵌套的一个分类。
非静态嵌套类(内部类)可访问其外围类的其他成员,即使这些成员被声明为私有的。
静态内部类,只能访问外部类中静态成员
内部类分为:
成员内部类
public class Outer {int num = 10;public void eat() {new Inner();//一般在本类中使用内部类}//在一个类的内部定义的类称为内部类class Inner {public void test() {System.out.println(num);//在内部类中可以直接使用外部类中的成员}}
}
静态内部类
//静态内部类,只能访问外部类中静态成员
private static int num1=20;class Inner {public void test() {System.out.println(num1);}}public static void main(String[] args) {}
}
局部内部类
jb.addActionListener(new ActionListener() {//将只在本类中使用的功能,定义在内部类中,实现封装,在哪儿使用,new内部类即可class MyAction implements ActionListener{@Overridepublic void actionPerformed(ActionEvent e) {System.out.println("被点击了");System.out.println(accountText.getText());//使用外部类的成员}}
匿名内部类
accountText.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {System.out.println("被点击了");System.out.println(accountText.getText());}});
内部类特点:
是独立的类
不能用普通的方式访问,内部可以自由访问外部类的成员变量
声明成静态的,就不能随便访问外部类的成员变量,只能访问外部类的静态成员变量
意义:
封装性
实现多继承
Java--GUI编程相关推荐
- The package javax.swing is not accessible(java GUI 编程时引用swing包和awt包时会报错怎么办)
Java GUI 编程时引用swing包和awt包时会报错怎么办 一.环境与错误现象 使用的编译器为eclipse,情况为: 二.解决方法 问题主要是由工程中的module-info.java这个文件 ...
- Java GUI编程学习
Java GUI编程学习 GUI编程 告诉大家怎么学? 这是什么? 他怎么玩? 该如何平时运用它? 组件 窗口 弹窗 面板 文本框 列表框 按钮 图片 监听事件 鼠标 键盘事件 破解工具 1.简介 G ...
- Java GUI编程的几种常用布局管理器
Java GUI编程的几种常用布局管理器 本人是一个大二的学生.因为最近有做JavaGUI界面的需求,因此重新开始熟悉JavaGUI的各种控件和布局.然后以次博文为笔记,总结.完善以及发表最近学习的一 ...
- java gui编程 计算器_Matlab-GUI编程:简单计算器的实现
前言:任何编程语言到了GUI这一块都逃不了要模仿做一个计算器来证明已经入门了.上个学期学java的时候GUI着实不好整,一个计算器硬是没整出来.这学期接触了matlab,虽然他号称是面向对象的编程语言 ...
- Java GUI编程。随堂笔记,仅供参考
GUI编程 1.简介 Gui的核心技术:Swing AWT 因为界面不美观. 需要jre环境 为什么要学习? 可以写出自己心中想要的一些小工具 工作时候,也可能需要维护到swing界面 了解MVC架构 ...
- Java GUI编程最全笔记以及贪吃蛇案例分享
GUI编程 简聊 1.简介 2.AWT 2.1.AWT介绍 2.2.组件和容器 1.Frame 2.面板Panel 2.3.布局管理器 2.4.事件监听 2.5.输入框 TextField监听 2.6 ...
- 如何使用javaw打开可运行的jar文件(java GUI编程)
正文 主要用于GUI编程 运行 regedit启动注册表 在注册表编辑器中, 找到"HKEY_CLASSES_ROOT\Applications\javaw.exe\shell\open\c ...
- Java GUI编程 简单的学号 姓名输入框,并可导入保存在txt文档中
(java GUI使用Frame作为顶层容器,简单的学号 姓名输入框,并可导入保存在txt文档中 下面是源代码: import java.awt.*; import java.awt.event.*; ...
- 【了解Java GUI编程】AWT和Swing的基本用法
GUI :Graphical User Interface,图形用户界面,指在计算机出现后,在屏幕上使用图形界面来帮助用户(User)与机器(Machine)打交道用的界面接口(Interface). ...
- Java GUI编程:swing实现上传tiff文件至hdfs功能
上传tiff文件至hdfs pom <?xml version="1.0" encoding="UTF-8"?> <project xmlns ...
最新文章
- 9条消除if...else的锦囊妙计,助你写出更优雅的代码
- Java普通对象的内存配置
- kotlin学习笔记——类型、变量、属性
- 将给定数据源生成静态HTML页面持久化到项目之外的硬盘
- 手机的小窗口怎么弄_荣耀9X如何设置桌面小工具?划重点,这个要考
- java中有序数组比无序数值好_java面向对象的有序数组和无序数组的比较
- 让年轻程序员少走弯路的14个忠告
- 自动轨迹绘制的python代码_python 自动轨迹绘制的实例代码
- centos删除gnome_自定义你的 GNOME 桌面主题 | Linux 中国
- 实现后台高级查询(中级版)
- 初识 NGINX 服务网格
- 螺旋数组,之字形数组
- 请认真使用没有后悔药的parted分区工具
- 制作一个简单的通讯录
- 通过InstallShield官网申请注册码
- 区块链与大数据,打造智能经济(读书笔记)——井底望天
- word论文排版和写作04:用MathType和word公式编辑器插入数学公式
- 史上最详细mac安装Qt教程
- Python-阿里云地图的爬取
- 英伟达 Tesla K80显卡驱动安装
热门文章
- PotPlayer打开视频默认尺寸和播放无边框设置
- 超方便的 IndexDB 库
- 【论文笔记】ICNet:用于无监督医学图像配准的逆一致性模型
- 这几款好用的电脑软件推荐给你
- CATIA一些技巧----------转自水木清华
- MySQL删除数据库的命令_删除数据库的命令是什么?
- Flink整合Drools规则引擎
- aspenv9使用_Aspen Plus V9【中文版】教程
- linux文件查找命令find,locate
- Ansys|关于使用HFSS仿真报错“the password is invalid for INTEL MPl to launch jobs. ”(附有安装方法)