Java Swing和AWT(Abstract Window Toolkit)都是Java的图形用户界面(GUI)工具包,用于创建跨平台的桌面应用程序。
AWT(Abstract Window Toolkit):AWT是Java最早的GUI工具包,它提供了一套基本的GUI组件,如按钮、文本框、菜单等。AWT基于本地平台的功能,通过Java的反射机制调用本地代码来实现GUI组件。因此,使用AWT编写的应用程序在跨平台时需要为每个目标平台重新编译。AWT在Java 1.0至Java 1.2期间非常流行,但随着更多功能的需求,其局限性逐渐显现。
Swing:Swing是Java 1.2中引入的GUI工具包,作为AWT的替代品。Swing基于AWT,并添加了许多新的组件和功能,例如JTable、JTree、JTextArea等。Swing通过使用一种称为“Pluggable Look and Feel”的机制,允许用户自定义应用程序的外观和感觉。此外,Swing还支持拖放操作、工具提示和默认按钮等高级功能。Swing的出现极大地简化了Java GUI应用程序的开发,使其成为Java的标准GUI工具包。
随着时间的推移,Swing也经历了一些改进和扩展。总之,Java Swing和AWT都是Java GUI开发的重要工具包。AWT是最早的Java GUI工具包,但随着需求的发展,Swing的出现简化了Java GUI应用程序的开发,成为Java的标准GUI工具包。随着时间的推移,Swing也得到了一些改进和扩展,以适应不断变化的需求。
Java Swing是一个用于开发图形用户界面(GUI)的Java工具包。以下是Java Swing的一些主要知识点:
- Swing组件:Swing提供了许多用于创建GUI的组件,如按钮(JButton)、标签(JLabel)、文本框(JTextField)等。这些组件可以用于构建复杂的用户界面。
- 容器和布局管理器:容器是用于容纳其他GUI组件的组件,而布局管理器则用于控制组件的大小和位置。Swing提供了多种布局管理器,如BorderLayout、FlowLayout、GridLayout等。
- 事件处理:Swing使用事件处理机制来响应用户与GUI组件的交互。事件处理程序是通过实现特定的事件监听器接口来编写的,例如ActionListener、MouseListener等。
- 模型-视图-控制器设计模式:Swing采用模型-视图-控制器(MVC)设计模式来组织其组件。MVC模式将GUI组件分为三个部分:模型、视图和控制器。这种设计模式有助于提高代码的可维护性和可扩展性。
- 可视化组件和非可视化组件:Swing中的组件可以分为可视化组件和非可视化组件。可视化组件用于呈现GUI元素,如按钮和标签,而非可视化组件则提供了一些功能性的组件,如滑块和进度条。
- 颜色和字体:Swing提供了Color和Font类来处理颜色和字体。这些类可以用于设置组件的外观属性,如背景色、前景色和字体样式。
- 工具提示和拖放操作:Swing支持工具提示(tooltips)和拖放操作,以增强用户界面的交互性和可用性。工具提示可以在用户将鼠标悬停在组件上时显示简短的提示信息,而拖放操作则允许用户通过拖动来移动或复制组件。

import javax.swing.*;
import java.awt.*;
//表示引入了javax包下的所有类和接口。
public class CompDemo extends JFrame {
public void init() {
JLabel jLabel = new JLabel("学java真是太好了");
//创建文本对象
jLabel.setForeground(Color.BLUE);
//字体颜色
Font font =new Font("微软雅黑", Font.BOLD, 20);
jLabel.setFont(font);
jLabel.setBorder(BorderFactory.createLineBorder(Color.BLUE));
//显示边框
jLabel.setBounds(10,20,200,30);
this.add(jLabel);
//把文本对象加入到窗体中
this.setLayout(null);
//设置窗体的布局格式(BorderLayout/FlowLayout/BoxLayout)
ImageIcon imageIcon = new ImageIcon("src/java图片.png");
JLabel jLabel1 = new JLabel(imageIcon);
//把图片对象给jLabel1
jLabel1.setBounds(20,70,400,100);
//20 - 组件的x坐标
//70 - 组件的y坐标
//400 - 组件的宽度
//100 - 组件的高度
jLabel1.setToolTipText("野马哥是java真神");
//当用户将鼠标悬停在组件上时,将会有怪事发生
jLabel1.setBorder(BorderFactory.createLineBorder(Color.BLUE));
this.add(jLabel1);
//把图片对象加入窗体中
this.setTitle("常用控件");
//设置窗体
this.setSize(500, 380);
//设置当前窗体的宽度高度
this.setLocationRelativeTo(null);
//窗体在屏幕里居中
this.setVisible(true);
//显示当前窗体
}
public static void main(String[] args) {
new CompDemo().init();
}
}
java Swing中图片设为当前窗体的图标
import javax.swing.ImageIcon;
import javax.swing.*;
//窗体
public class JFameDemo extends JFrame {
public void init() {
ImageIcon imageIcon = new ImageIcon("src/java图片.png");
//创造图片对象
this.setIconImage(imageIcon.getImage());
//把图片设为当前窗体的图标
this.setTitle("java真是太好玩了");
//设置窗体
this.setSize(500,380);
//设置当前窗体的宽度高度
this.setLocationRelativeTo(null);
//窗体在屏幕里居中
this.setVisible(true);
//显示当前窗体
}
public static void main(String[] args) {
new JFameDemo().init();
//创造窗体对象 调用init初始化方法
}
}
java Swing中添加背景图片
import javax.swing.*;
import java.awt.*;
public class BackgroundImageDemo {
public static void main(String[] args) {
// 创建窗体
JFrame frame = new JFrame("Background Image Demo");
// 设置窗体大小
frame.setSize(400, 300);
// 设置背景图片
ImageIcon background = new ImageIcon("src/java图片.png");
frame.setContentPane(new JLabel(background));
// 创建账号和密码框
JTextField usernameField = new JTextField(20);
JPasswordField passwordField = new JPasswordField(20);
// 创建登录按钮
JButton loginButton = new JButton("Login");
String username = usernameField.getText();
String password = new String(passwordField.getPassword());
// TODO: 验证账号和密码
;
// 将账号和密码框,以及登录按钮添加到窗体中
frame.setLayout(new FlowLayout()); // 设置布局管理器为FlowLayout,以便组件按顺序排列
frame.add(new JLabel("Username:"));
frame.add(usernameField);
frame.add(new JLabel("Password:"));
frame.add(passwordField);
frame.add(loginButton);
// 使窗体大小与背景图片大小相匹配
frame.pack();
// 将窗体设置为可见
frame.setVisible(true);
}
}
(希望通过努力和更好的自己在未来一次次的重逢~~~)
本文介绍了Java的两个图形用户界面工具包,AWT和Swing,讨论了它们的历史、特点、组件、布局管理和事件处理等内容,重点阐述了Swing如何简化GUI开发并成为Java标准。
6479

被折叠的 条评论
为什么被折叠?



