Java GUI编程
引言
图形用户界面(GUI)编程是使应用程序与用户进行交互的重要部分。Java提供了多种用于GUI开发的工具和库,最常用的是Swing和AWT。本文将详细介绍Java GUI编程的基础知识,包括Swing和AWT框架、事件处理以及高级GUI组件的使用,并通过表格进行总结和示范。
Swing框架
Swing是Java提供的一组用于创建图形用户界面的类库。它基于AWT(Abstract Window Toolkit),但比AWT功能更丰富、更灵活。
Swing组件
Swing提供了一系列组件,如JFrame
、JButton
、JLabel
等,用于创建各种GUI元素。
示例:创建一个简单的Swing应用程序
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;public class SimpleSwingApp {public static void main(String[] args) {// 创建主窗口JFrame frame = new JFrame("Simple Swing Application");frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setSize(400, 300);// 创建面板JPanel panel = new JPanel();// 创建标签和按钮JLabel label = new JLabel("Hello, Swing!");JButton button = new JButton("Click Me");// 将组件添加到面板panel.add(label);panel.add(button);// 将面板添加到主窗口frame.add(panel);// 显示窗口frame.setVisible(true);}
}
常用Swing组件表
组件 | 描述 | 示例代码 |
---|---|---|
JFrame | 主窗口框架,包含其他组件 | JFrame frame = new JFrame("Title"); |
JPanel | 用于组织和管理其他组件的容器 | JPanel panel = new JPanel(); |
JLabel | 显示文本或图像的标签 | JLabel label = new JLabel("Text"); |
JButton | 可点击的按钮 | JButton button = new JButton("Click Me"); |
JTextField | 单行文本输入框 | JTextField textField = new JTextField(20); |
JTextArea | 多行文本输入框 | JTextArea textArea = new JTextArea(5, 20); |
JComboBox | 下拉选择框 | JComboBox<String> comboBox = new JComboBox<>(new String[]{"Item1", "Item2"}); |
JCheckBox | 复选框 | JCheckBox checkBox = new JCheckBox("Check Me"); |
AWT框架
AWT是Java的原始GUI工具包,提供了基本的GUI组件和绘图功能。虽然Swing大部分取代了AWT,但AWT仍然用于低层次的图形编程和与原生系统资源的交互。
AWT组件
AWT组件包括Frame
、Button
、Label
等,与Swing组件类似,但功能简单一些。
示例:创建一个简单的AWT应用程序
import java.awt.Button;
import java.awt.Frame;
import java.awt.Label;
import java.awt.Panel;public class SimpleAWTApp {public static void main(String[] args) {// 创建主窗口Frame frame = new Frame("Simple AWT Application");frame.setSize(400, 300);// 创建面板Panel panel = new Panel();// 创建标签和按钮Label label = new Label("Hello, AWT!");Button button = new Button("Click Me");// 将组件添加到面板panel.add(label);panel.add(button);// 将面板添加到主窗口frame.add(panel);// 显示窗口frame.setVisible(true);}
}
常用AWT组件表
组件 | 描述 | 示例代码 |
---|---|---|
Frame | 主窗口框架,包含其他组件 | Frame frame = new Frame("Title"); |
Panel | 用于组织和管理其他组件的容器 | Panel panel = new Panel(); |
Label | 显示文本或图像的标签 | Label label = new Label("Text"); |
Button | 可点击的按钮 | Button button = new Button("Click Me"); |
TextField | 单行文本输入框 | TextField textField = new TextField(20); |
TextArea | 多行文本输入框 | TextArea textArea = new TextArea(5, 20); |
Choice | 下拉选择框 | Choice choice = new Choice(); choice.add("Item1"); choice.add("Item2"); |
Checkbox | 复选框 | Checkbox checkBox = new Checkbox("Check Me"); |
事件处理
事件处理是GUI编程的核心,用于响应用户的操作,如点击按钮、输入文本等。Java提供了事件处理机制,通过监听器接口处理各种事件。
使用ActionListener处理按钮点击事件
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;public class EventHandlingApp {public static void main(String[] args) {// 创建主窗口JFrame frame = new JFrame("Event Handling Application");frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setSize(400, 300);// 创建按钮JButton button = new JButton("Click Me");// 添加按钮点击事件监听器button.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {JOptionPane.showMessageDialog(frame, "Button clicked!");}});// 添加按钮到窗口frame.add(button);// 显示窗口frame.setVisible(true);}
}
常用事件监听器接口表
监听器接口 | 描述 | 示例代码 |
---|---|---|
ActionListener | 处理动作事件,如按钮点击 | button.addActionListener(e -> { ... }); |
KeyListener | 处理键盘事件 | textField.addKeyListener(new KeyAdapter() { ... }); |
MouseListener | 处理鼠标事件 | panel.addMouseListener(new MouseAdapter() { ... }); |
WindowListener | 处理窗口事件,如窗口打开、关闭 | frame.addWindowListener(new WindowAdapter() { ... }); |
高级GUI组件
JTable
JTable
用于显示和编辑二维表格数据。
示例:使用JTable显示表格数据
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;public class TableExample {public static void main(String[] args) {// 创建主窗口JFrame frame = new JFrame("JTable Example");frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setSize(500, 300);// 表格数据Object[][] data = {{"John", 28, "Engineer"},{"Anna", 24, "Teacher"},{"Mike", 32, "Designer"}};// 表头String[] columnNames = {"Name", "Age", "Occupation"};// 创建表格JTable table = new JTable(data, columnNames);// 将表格添加到滚动面板JScrollPane scrollPane = new JScrollPane(table);frame.add(scrollPane);// 显示窗口frame.setVisible(true);}
}
JTree
JTree
用于显示分层数据,如文件系统结构。
示例:使用JTree显示树形数据
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTree;
import javax.swing.tree.DefaultMutableTreeNode;public class TreeExample {public static void main(String[] args) {// 创建主窗口JFrame frame = new JFrame("JTree Example");frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setSize(300, 400);// 创建根节点DefaultMutableTreeNode root = new DefaultMutableTreeNode("Root");// 创建子节点DefaultMutableTreeNode child1 = new DefaultMutableTreeNode("Child 1");DefaultMutableTreeNode child2 = new DefaultMutableTreeNode("Child 2");// 添加子节点到根节点root.add(child1);root.add(child2);// 创建树JTree tree = new JTree(root);// 将树添加到滚动面板JScrollPane scrollPane = new JScrollPane(tree);frame.add(scrollPane);// 显示窗口frame.setVisible(true);}
}
JTabbedPane
JTabbedPane用于创建选项卡界面,可以容纳多个选项卡,每个选项卡包含不同的内容。
示例:使用JTabbedPane创建选项卡界面
java
Copy
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTabbedPane;
import javax.swing.JLabel;public class TabbedPaneExample {public static void main(String[] args) {// 创建主窗口JFrame frame = new JFrame("JTabbedPane Example");frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setSize(400, 300);// 创建选项卡面板JTabbedPane tabbedPane = new JTabbedPane();// 创建选项卡JPanel tab1 = new JPanel();tab1.add(new JLabel("This is Tab 1"));tabbedPane.addTab("Tab 1", tab1);JPanel tab2 = new JPanel();tab2.add(new JLabel("This is Tab 2"));tabbedPane.addTab("Tab 2", tab2);// 将选项卡面板添加到窗口frame.add(tabbedPane);// 显示窗口frame.setVisible(true);}
}
JSplitPane
JSplitPane用于在一个窗口中分割两个组件,可以水平或垂直分割。
示例:使用JSplitPane创建分割面板
java
Copy
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JSplitPane;
import javax.swing.JLabel;public class SplitPaneExample {public static void main(String[] args) {// 创建主窗口JFrame frame = new JFrame("JSplitPane Example");frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setSize(400, 300);// 创建左侧面板和右侧面板JPanel leftPanel = new JPanel();leftPanel.add(new JLabel("Left Panel"));JPanel rightPanel = new JPanel();rightPanel.add(new JLabel("Right Panel"));// 创建分割面板JSplitPane splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, leftPanel, rightPanel);splitPane.setDividerLocation(150); // 设置分割位置// 将分割面板添加到框架frame.add(splitPane);// 显示窗口frame.setVisible(true);}
}
高级GUI组件表格总结
组件 | 描述 | 示例代码 |
---|---|---|
JTable | 用于显示和编辑二维表格数据的组件 | JTable table = new JTable(data, columnNames); |
JTree | 用于显示分层数据的树形结构组件 | JTree tree = new JTree(root); |
JTabbedPane | 用于创建选项卡界面的组件 | JTabbedPane tabbedPane = new JTabbedPane(); |
JSplitPane | 用于在一个窗口中分割两个组件的组件 | JSplitPane splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, leftPanel, rightPanel); |
表格总结
常用Swing组件表
组件 | 描述 | 示例代码 |
---|---|---|
JFrame | 主窗口框架,包含其他组件 | JFrame frame = new JFrame("Title"); |
JPanel | 用于组织和管理其他组件的容器 | JPanel panel = new JPanel(); |
JLabel | 显示文本或图像的标签 | JLabel label = new JLabel("Text"); |
JButton | 可点击的按钮 | JButton button = new JButton("Click Me"); |
JTextField | 单行文本输入框 | JTextField textField = new JTextField(20); |
JTextArea | 多行文本输入框 | JTextArea textArea = new JTextArea(5, 20); |
JComboBox | 下拉选择框 | JComboBox<String> comboBox = new JComboBox<>(new String[]{"Item1", "Item2"}); |
JCheckBox | 复选框 | JCheckBox checkBox = new JCheckBox("Check Me"); |
常用AWT组件表
组件 | 描述 | 示例代码 |
---|---|---|
Frame | 主窗口框架,包含其他组件 | Frame frame = new Frame("Title"); |
Panel | 用于组织和管理其他组件的容器 | Panel panel = new Panel(); |
Label | 显示文本或图像的标签 | Label label = new Label("Text"); |
Button | 可点击的按钮 | Button button = new Button("Click Me"); |
TextField | 单行文本输入框 | TextField textField = new TextField(20); |
TextArea | 多行文本输入框 | TextArea textArea = new TextArea(5, 20); |
Choice | 下拉选择框 | Choice choice = new Choice(); choice.add("Item1"); choice.add("Item2"); |
Checkbox | 复选框 | Checkbox checkBox = new Checkbox("Check Me"); |
常用事件监听器接口表
监听器接口 | 描述 | 示例代码 |
---|---|---|
ActionListener | 处理动作事件,如按钮点击 | button.addActionListener(e -> { ... }); |
KeyListener | 处理键盘事件 | textField.addKeyListener(new KeyAdapter() { ... }); |
MouseListener | 处理鼠标事件 | panel.addMouseListener(new MouseAdapter() { ... }); |
WindowListener | 处理窗口事件,如窗口打开、关闭 | frame.addWindowListener(new WindowAdapter() { ... }); |
高级GUI组件表格总结
组件 | 描述 | 示例代码 |
---|---|---|
JTable | 用于显示和编辑二维表格数据的组件 | JTable table = new JTable(data, columnNames); |
JTree | 用于显示分层数据的树形结构组件 | JTree tree = new JTree(root); |
JTabbedPane | 用于创建选项卡界面的组件 | JTabbedPane tabbedPane = new JTabbedPane(); |
JSplitPane | 用于在一个窗口中分割两个组件的组件 | JSplitPane splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, leftPanel, rightPanel); |
总结
本文详细介绍了Java GUI编程的基础知识,包括Swing和AWT框架、事件处理以及高级GUI组件的使用。通过示例代码和表格总结,帮助读者更好地理解和应用Java中的GUI编程,提高应用程序的用户交互体验。
相关文章:
Java GUI编程
引言 图形用户界面(GUI)编程是使应用程序与用户进行交互的重要部分。Java提供了多种用于GUI开发的工具和库,最常用的是Swing和AWT。本文将详细介绍Java GUI编程的基础知识,包括Swing和AWT框架、事件处理以及高级GUI组件的使用&…...
ROS机器人小车建模仿真与SLAM
文章目录 一、URDF二、创建小车模型1.创建功能包2.导入依赖3.创建urdf,launch文件:4.可视化 三、添加雷达1.xacro文件2.集成和修改launch3.添加摄像头和雷达 三.GAZEBO仿真四、orbslam2kitti1.下载2.安装编译ORB_SLAM23.运行Kitee数据集 一、URDF URDFÿ…...
Windows10安装Docker Desktop(实操步骤版)
1,下载Docker Desktop 官网下载地址: https://desktop.docker.com/win/stable/amd64/Docker%20Desktop%20Installer.exe 国内镜像下载地址(本人下载这个): https://smartidedl.blob.core.chinacloudapi.cn/docker/2…...
Leetcode 45. 跳跃游戏 II(DP 双指针)
Leetcode 45. 跳跃游戏 II 动态规划 使用dp [ ] 记录每个位置可达的最小步数,每到达一个点时,更新该点所能跳跃区间内的所有点的dp值 时间复杂度较高 class Solution {public int jump(int[] nums) {int n nums.length;int dp[] new int [n];int N …...
Codeforces Round 952 (Div. 4)(实时更新)
A - Creating Words 题意:略 代码: #include<bits/stdc.h> #define ios ios::sync_with_stdio(0),cin.tie(0),cout.tie(0)//不能使用scanf了 #define int long long #define loop(n) for(int i0;i<n;i) #define rloop(n) for(int in-1;i>…...
【AI实践】Dify开发应用和对接微信
自定义应用 创建应用有2种, 从应用模板创建 空白应用,也就是自定义应用 选择翻译助手 Translation assistant模板创建一个应用 自定义应用,创建一个child_accompany_bot自定的应用,用来支持家长,如何解决低龄儿童的…...
精准定位,智慧提纯:高级数据提取策略
在数据驱动的时代,高级数据提取策略成为企业决策、科学研究以及各类项目成功的关键。数据提取,不仅仅是简单地收集信息,而是需要精准定位目标数据,并通过智慧提纯方法,从海量数据中提取出有价值、有深度的信息。本文将…...
USB转I2C转SPI芯片CH341与CH347比较
1. 芯片中文资料: USB转I2C转SPI芯片CH341 高速USB转接芯片CH347转9M双串口转I2C转SPI转JTAG转SWD USB2.0高速转接芯片CH347应用开发手册 2. CH341与CH347比较: 类别CH341CH347备注串口速度2M9MCH347的串口速度更快设置CH341的I2C或SPI不能与串口同…...
期权无风险套利(Risk-Free Arbitrage)举例以及期权无套利定价公式
期权市场的无风险套利 中文版 期权市场中的套利实例 为了清楚地说明,让我们通过一个现实的例子来展示套利。 期权市场中的套利实例 假设市场上有以下价格: 标的股票价格:100美元欧式看涨期权(行权价100美元,3个月…...
Java基础知识巩固自测(上)
前言 该文章适用于已初步了解Java基础知识的入门学习者,便于快速回顾知识点,查漏补缺。 内容包括:Java面向对象相关知识、SQL基础语法 复习建议技巧 实用3W思维法(What、Why、How) 1. What(什么&#x…...
通过 Python+Nacos实现微服务,细解微服务架构
shigen坚持更新文章的博客写手,擅长Java、python、vue、shell等编程语言和各种应用程序、脚本的开发。记录成长,分享认知,留住感动。 个人IP:shigen 背景 一直以来的想法比较多,然后就用Python编写各种代码脚本。很多…...
如何使用new和delete操作符进行动态内存分配和释放?
在C中,new 和 delete 操作符用于在堆(heap)上动态地分配和释放内存。这是管理内存的一种重要方式,特别是在需要创建可变数量或生命周期与程序执行流程不一致的对象时。 使用 new 进行动态内存分配 当你使用 new 操作符时&#x…...
【SCAU数据挖掘】数据挖掘期末总复习题库选择题及解析
1.将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?( C ) A.频繁模式挖掘 B.分类和预测 C.数据预处理 D.数据流挖掘 解析:数据预处理是数据分析和数据挖掘的重要步骤之一,包括数据清洗、集成、变换、规约(如维度规约、数值规约)等。这…...
顶顶通呼叫中心中间件-限制最大通话时间(mod_cti基于FreeSWITCH)
顶顶通呼叫中心中间件-限制最大通话时间(mod_cti基于FreeSWITCH) 一、最大通话时间 1、配置拨号方案 1、点击拨号方案 ->2、在框中输入通话最大时长->3、点击添加->4、根据图中配置->5、勾选continue。修改拨号方案需要等待一分钟即可生效 action"sched…...
深度学习:使用argparse 模块
在深度学习中,结合 Bash 脚本和 argparse 模块,可以实现高效的任务自动化和参数管理。Bash 脚本可以用来调度任务和管理环境,而 argparse 模块可以用来解析命令行参数,控制深度学习模型的训练和评估过程。 1.argparse 模块 argp…...
unity text根据文本内容自动设置高度
我们经常会遇到需要根据文字数量动态修改文本框高度的需求,我们可以使用文本的行数*每行的高度来计算文本框的高度,伪代码如下: int oneLineHight 50;// 每行的像素高度 private void ResetTextHight(string str) {//设置文字内容ShowText.…...
ARM 汇编 C语言 for循环
在使用 Keil 编译基于 STM32F103 的 C 语言程序时,生成的汇编代码会有一些不同。STM32F103 是基于 ARM Cortex-M3 内核的微控制器,因为汇编语言是 ARM 汇编,而不是 x86 汇编。 示例 C 代码 假设我们有如下的简单 C 语言 for 循环代码&#x…...
java:【@ComponentScan】和【@SpringBootApplication】扫包范围的冲突
# 代码结构如下: 注意【com.chz.myBean.branch】和【com.chz.myBean.main】这两个包是没有生重叠的。 主程序【MyBeanTest1、MyBeanTest2、MyBeanTest3】这两个类是在包【com.chz.myBean.main】下 # 示例代码 【pom.xml】 <dependency><groupId>org.…...
本学期嵌入式期末考试的综合项目,我是这么出题的
时间过得真快,临近期末,又到了老师出卷的时候。作为《嵌入式开发及应用》这门课的主讲教师,今年给学生出的题目有一点点难度,最后的综合项目要求如下所示,各位学生朋友和教师同行可以评论一下难度如何,单片…...
CSS概述
CSS是一种样式表语言,用于为HTML文档控制外观,定义布局。例如, CSS涉及字体、颜色、边距、高度、宽度、背景图像、高级定位等方面 。 ● 可将页面的内容与表现形式分离,页面内容存放在HTML文档中,而用 于定义表现形式…...
Tensorflow-GPU工具包了解和详细安装方法
目录 基础知识信息了解 显卡算力 CUDA兼容 Tensorflow gpu安装 CUDA/cuDNN匹配和下载 查看Conda driver的版本 下载CUDA工具包 查看对应cuDNN版本 下载cuDNN加速库 CUDA/cuDNN安装 CUDA安装方法 cuDNN加速库安装 配置CUDA/cuDNN环境变量 配置环境变量 核验是否安…...
【python】OpenCV GUI——Trackbar(14.2)
学习来自 OpenCV基础(12)OpenCV GUI中的鼠标和滑动条 文章目录 GUI 滑条介绍cv2.createTrackbar 介绍牛刀小试 GUI 滑条介绍 GUI滑动条是一种直观且快速的调节控件,主要用于改变一个数值或相对值。以下是关于GUI滑动条的详细介绍:…...
Qt自定义日志输出
Qt自定义日志输出 简略版: #include <QApplication> #include <QDebug> #include <QDateTime> #include <QFileInfo> // 将日志类型转换为字符串 QString typeToString(QtMsgType type) {switch (type) {case QtDebugMsg: return "D…...
[C++] vector list 等容器的迭代器失效问题
标题:[C] 容器的迭代器失效问题 水墨不写bug 正文开始: 什么是迭代器? 迭代器是STL提供的六大组件之一,它允许我们访问容器(如vector、list、set等)中的元素,同时提供一个遍历容器的方法。然而…...
Java——变量作用域和生命周期
一、作用域 1、作用域简介 在Java中,作用域(Scope)指的是变量、方法和类在代码中的可见性和生命周期。理解作用域有助于编写更清晰、更高效的代码。 2、作用域 块作用域(Block Scope): 块作用域是指在…...
WPF界面设计
1、使用C#-WPF实现抽屉效果-炫酷漂亮的侧边栏导航菜单-SplitViewMD主题重绘原生控件的美观效果-提供源码Demo下载 码源地址:https://download.csdn.net/download/Prince999999/89424685 2、使用C#-WPF实现抽屉效果-菜单导航功能实现,常规的管理系统应该…...
【C#】使用JavaScriptSerializer序列化对象
在C#开发语言编程中,通常使用系统内置的JavaScriptSerializer类来序列化对象,以便将其转换为JSON格式的文本存储与后台服务通信, 在这里将为大家详细介绍一下这个过程。 文章目录 反序列化序列化忽略属性 假设处理的数据中有一个对象类, 如下 public cl…...
HTML静态网页成品作业(HTML+CSS)—— 明星吴磊介绍网页(5个页面)
🎉不定期分享源码,关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 🏷️本套采用HTMLCSS,未使用Javacsript代码,共有5个页面。 二、作品演示 三、代…...
EasyRecovery2024数据恢复神器#电脑必备良品
EasyRecovery数据恢复软件,让你的数据重见天日! 大家好!今天我要给大家种草一个非常实用的软件——EasyRecovery数据恢复软件!你是不是也曾经遇到过不小心删除了重要的文件,或者电脑突然崩溃导致数据丢失的尴尬情况呢&…...
前端HTML相关知识
1.什么是HTML HTML 指的是超文本标记语言 ( HyperText Markup Language )。 超文本:是指页面内可以包含图片、链接、声音,视频等内容 标记:标签(通过标记符号来告诉浏览器网页内容该如何显示) 浏览器根据不同的HTML标签,解析成我们看到的网页 2.HTML的特点 HTML不…...
专门做电商的招聘网站/seo在线教程
设计思想: 在类体定义一个静态int型变量num,定义类的构造函数,num加一,并且输出创建num个类,在main方法中给num赋值为零,创建若干个对象。 流程图: 代码: public class TestStatic{ …...
信主网站/广告开户
题目:用*号输出字母C的图案。 程序分析:可先用*号在纸上写出字母C,再分行输出。 程序代码: #include <stdio.h> int main() {printf("用 * 号输出字母 C!\n");printf(" ****\n");printf(" *\n&…...
精品课网站制作/自己如何建立网站
打游戏断电后损失数据,原因是电脑用“随机存取存储器”简称RAM中信息丢失,它只能在有点情况下存储东西,比如游戏状态。 另一种存储叫持久存储,电源关闭数据也不会丢失。 锁存器 我们拿一个OR门,把输入连回输出&#…...
三合一网站建设平台/百度一下首页登录
评分说明:(1)只要认真完成作业(无论对错),即可得到基础分8分,总分为22分;(2)如果总得分超过基础分(8分),则按如下参考答案及评分标准逐项给分,并累加核算本题总得分。参考答案及评分标准:(1)R1的路由表&…...
网络设计培训学校长沙/深圳网站设计专业乐云seo
今天我们就不多余介绍前面的安装步骤了,具体可以参考上一篇6.8的创建,主要讲一下另一部分. 首先我们能看到如图的界面,直接进入之后点击enter键. 我建议大家选择英文,因为在我们后面的学习中我们的日志文件,错误代码都会以英文的方式呈现,有的时候的中文直译会不太准确,我们也要…...
win7 搭建iss网站/seo外包公司优化
一、Spring 容器高层视图 Spring 启动时读取应用程序提供的Bean配置信息,并在Spring容器中生成一份相应的Bean配置注册表,然后根据这张注册表实例化Bean,装配号Bean之间的依赖关系,为上层应用提供准备就绪的运行环境。 二、内部工…...