Java图形组件Swing小结
一、知识点小结
Swing是java中的图形组件,主要用来开发图形界面的。Swing组件有两类,一类是容器类,表示可以装载其他的组件;另一类是元素类表示不可以装载其他的组件。在javax.swing包下的容器组件有JFrame,JPanel和JMenuBar,其中窗体是最大的容器组件,即窗体上可以添加面板,但面板上不能添加窗体;同包下常用的元素组件有JLabel标签类,JButton按钮类,JTextField文本输入框类,JPasswordField密码输入框类,JComboBox下拉框类,JCheckBox复选框类,JMenuItem菜单类等。在java.awt
包下和javax.swing包下都有布局类,只要是以Layout结尾的就是布局类。布局类是要使元素组件在窗体上摆放的有一定的规则,常用的布局类有BorderLayout边框布局,FlowLayout流式布局和GridLayout网格布局等。
二、程序示例
通过Swing中基本组件的简单应用实现QQ登陆界面。
1.实例化一个窗体对象,并添加背景图标,窗体的布局方式为BorderLayout边框布局
程序代码:
package QQLogin2; import java.awt.BorderLayout; import javax.swing.ImageIcon; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; public class LoginUI extends JFrame{ /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub //实例化一个窗体对象 LoginUI lo = new LoginUI(); //调用初始化界面的方法 lo.showUI(); } private void showUI() { // TODO Auto-generated method stub /* * 设置窗体的基本属性 */ this.setSize(390,320);//设置窗体大小 this.setTitle(" ");//设置窗体标题 this.setLocationRelativeTo(null);//窗口至于屏幕中央 this.setDefaultCloseOperation(3);//设置关闭窗体是的操作 this.setResizable(false);//设置禁止改变窗体大小 this.setLayout(new BorderLayout());//// JFrame默认的布局是边框布局 //实例化一个背景图标对象 ImageIcon backgroundImage = new ImageIcon("images/QQ截图-登陆界面.png"); //实例化一个标签来显示背景图标 JLabel jlaBackground = new JLabel(backgroundImage); // 设置JLabel组件的显示位置和大小 jlaBackground.setBounds(0, 0, backgroundImage.getIconWidth(),backgroundImage.getIconHeight()); //将jlaBackground添加到JLayeredPane的底层 this.getLayeredPane().add(jlaBackground, new Integer(Integer.MIN_VALUE)); //获取ContentPane对象 JPanel contentPane = (JPanel)this.getContentPane(); //设置ContentPane对象为透明 contentPane.setOpaque(false); //设置窗体可见 this.setVisible(true); } }
运行结果如图:
2.在窗体的中,西,南,北四个方位分别添加面板,初步布局如下图:
3.给各个面板添加组件,完整代码如下:
/* * 定义一个窗体类 */ import java.awt.BorderLayout; import javax.swing.ImageIcon; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; public class LoginUI extends JFrame{ /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub //实例化一个窗体对象 LoginUI lo = new LoginUI(); //调用初始化界面的方法 lo.showUI(); } private void showUI() { // TODO Auto-generated method stub /* * 设置窗体的基本属性 */ this.setSize(390,320);//设置窗体大小 this.setTitle(" ");//设置窗体标题 this.setLocationRelativeTo(null);//窗口至于屏幕中央 this.setDefaultCloseOperation(3);//设置关闭窗体是的操作 this.setResizable(false);//设置禁止改变窗体大小 this.setLayout(new BorderLayout());//// JFrame默认的布局是边框布局 //实例化一个背景图标对象 ImageIcon backgroundImage = new ImageIcon("images/QQ截图-登陆界面.png"); //实例化一个标签来显示背景图标 JLabel jlaBackground = new JLabel(backgroundImage); // 设置JLabel组件的显示位置和大小 jlaBackground.setBounds(0, 0, backgroundImage.getIconWidth(),backgroundImage.getIconHeight()); //将jlaBackground添加到JLayeredPane的底层 this.getLayeredPane().add(jlaBackground, new Integer(Integer.MIN_VALUE)); //获取ContentPane对象 JPanel contentPane = (JPanel)this.getContentPane(); //设置ContentPane对象为透明 contentPane.setOpaque(false); /* * 给窗体添加南北西中四块面板 */ //添加南边面板 SouthPanel sp = new SouthPanel(); this.add(sp,BorderLayout.SOUTH); //给中间添加面板 CenterPanel cp = new CenterPanel(); this.add(cp,BorderLayout.CENTER); //添加西边面板 WestPanel wp = new WestPanel(); this.add(wp,BorderLayout.WEST); //添加北边面板 NorthPanel np = new NorthPanel(); this.add(np,BorderLayout.NORTH); //设置窗体可见 this.setVisible(true); } }
/* * 定义中间面板 */ import java.awt.Color; import java.awt.Dimension; import java.awt.FlowLayout; import javax.swing.JCheckBox; import javax.swing.JComboBox; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextField; public class CenterPanel extends JPanel{ public CenterPanel(){ initUI(); } private void initUI() { // TODO Auto-generated method stub //设置面板为透明 this.setOpaque(false); //设置面板布局方式为流式布局左对齐 this.setLayout(new FlowLayout(FlowLayout.LEFT)); //实例化一个下拉框对象 JComboBox jc = new JComboBox(); jc.addItem("QQ号码/手机/邮箱");//默认显示内容 jc.setEditable(true);//设置可编辑 jc.setPreferredSize(new Dimension(185,25));//设置组件大小 //将下拉框添加到面板上 this.add(jc); //添加"注册账号"标签 this.add(new JLabel(" 注册账号")); //实例化一个文本输入框对象 JTextField jf = new JTextField(); jf.setPreferredSize(new Dimension(185,25));//设置文本框大小 //添加文本框到面板上 this.add(jf); //添加"忘记密码"标签 this.add(new JLabel(" 忘记密码")); //添加复选框 JCheckBox jc1 = new JCheckBox("记住密码"); jc1.setOpaque(false);//设置为透明 JCheckBox jc2 = new JCheckBox("自动登录"); jc2.setOpaque(false);//设置为透明 this.add(jc1); this.add(jc2); } }
/* * 定义西边面板 */ import java.awt.Color; import java.awt.Dimension; import java.awt.FlowLayout; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JLabel; import javax.swing.JPanel; public class WestPanel extends JPanel{ public WestPanel(){ initUI(); } private void initUI() { // TODO Auto-generated method stub //设置面板透明 this.setOpaque(false); //设置面板大小 this.setPreferredSize(new Dimension(110,0)); //设置面板为空布局 this.setLayout(new FlowLayout()); //添加按钮图标 //this.add(new JButton(new ImageIcon("images/QQ截图-图标.png"))); //添加一个图标标签 ImageIcon im = new ImageIcon("images/QQ截图-图标.png"); JLabel ja = new JLabel(im); this.add(ja); } }
/* * 定义北边面板 */ import java.awt.Color; import java.awt.Dimension; import javax.swing.JPanel; public class NorthPanel extends JPanel{ public NorthPanel(){ initUI(); } private void initUI() { // TODO Auto-generated method stub //只设置面板大小和透明 this.setPreferredSize(new Dimension(0,120)); this.setOpaque(false); } }
/* * 定义南边面板 */ import java.awt.Color; import java.awt.Dimension; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JLabel; import javax.swing.JPanel; public class SouthPanel extends JPanel{ public SouthPanel(){ initUI(); } private void initUI() { // TODO Auto-generated method stub //设置面板大小 this.setPreferredSize(new Dimension(0,50)); this.setOpaque(false); //设置面板颜色 //添加登录按钮 JButton jb = new JButton(new ImageIcon("images/登陆按钮截图.png")); jb.setSize(this.getWidth(), this.getHeight()); this.add(jb);//添加按钮成功 } }
完整程序运行结果如图
程序结束。
相关推荐
6. **本章小结** 学习Swing图形界面设计,我们需要掌握GUI的基本概念,了解AWT与Swing的区别,熟练使用各种组件,理解布局管理器的工作原理,并学会编写事件处理代码。Swing提供的组件丰富多样,能够满足创建复杂...
### 小结 Swing 作为一种强大的 GUI 构建工具,不仅为开发者提供了丰富的组件库,还提供了高级的功能和灵活的布局管理机制,极大地提高了开发效率。通过了解 Swing 的基础知识及其核心组件和容器,开发者可以快速...
在本项目中,我们主要探讨的是使用Java Swing库来创建一个图形用户界面(GUI)的ATM智能柜员机模拟程序。Swing是Java提供的一个用于构建桌面应用程序的UI工具包,它允许开发者构建功能丰富的、交互式的用户界面。...
#### 18.6 小结 本章主要介绍了Java图形界面开发的基础知识和常用技术,包括AWT、Swing和SWT等。通过本章的学习,读者可以了解到图形界面开发的基本流程和技术要点,为进一步深入研究和实践打下坚实的基础。
Java Swing 是 Java 平台中用于构建图形用户界面(GUI)的一个强大库。它是在 Java 2.0 版本中引入的,作为对早期 Java AWT(Abstract Window Toolkit)库的增强和扩展。Swing 的主要优势在于其轻量级特性、丰富的...
### Java图形编辑系统课程设计报告知识点解析 #### 一、项目背景与目标 - **项目背景**:本项目为一门面向软件(多媒体)专业的课程设计作业,旨在通过实践加深学生对Java编程的理解,并掌握图形编辑系统的开发...
在Java AWT(Abstract Window Toolkit)和Swing库中,事件处理主要基于观察者模式。当用户执行某个操作,如点击按钮,会触发一个事件。这个事件由事件源(通常是一个组件,如 JButton)产生,并被传递给一个或多个...
◇本讲小结 ◇课后习题 ★ 第二讲 Java语言基础知识 ◇课前索引 ◇2.1 简单数据类型 ◇2.2 运算符和表达式 ◇2.3 控制语句 ◇2.4 数组 ◇2.5 字符串的处理 ◇本讲小结 ◇课后习题 ★ 第三讲 Java语言...
#### 小结 通过以上内容的学习,我们了解到MyEclipse在图形界面开发方面提供了强大的支持。无论是使用AWT、Swing还是SWT,开发者都可以借助MyEclipse中的各种工具和插件来提高开发效率,创建出高质量的图形用户界面...
◇本讲小结 ◇课后习题 ★ 第二讲 Java语言基础知识 ◇课前索引 ◇2.1 简单数据类型 ◇2.2 运算符和表达式 ◇2.3 控制语句 ◇2.4 数组 ◇2.5 字符串的处理 ◇本讲小结 ◇课后习题 ★ 第三讲 Java语言...
◇本讲小结 ◇课后习题 ★ 第二讲 Java语言基础知识 ◇课前索引 ◇2.1 简单数据类型 ◇2.2 运算符和表达式 ◇2.3 控制语句 ◇2.4 数组 ◇2.5 字符串的处理 ◇本讲小结 ◇课后习题 ★ 第三讲 Java语言...
7. 小结: 这个基于Swing的贪吃蛇游戏项目不仅展示了Swing组件的使用,还涵盖了基本的游戏编程概念,如定时器、绘图、事件处理和游戏逻辑。通过研究和实践这个项目,开发者可以深入理解Java GUI编程,并提升自己的...
◇本讲小结 ◇课后习题 ★ 第二讲 Java语言基础知识 ◇课前索引 ◇2.1 简单数据类型 ◇2.2 运算符和表达式 ◇2.3 控制语句 ◇2.4 数组 ◇2.5 字符串的处理 ◇本讲小结 ◇课后习题 ★ 第三讲 Java语言中...
- 应用Swing组件实现简单的图形化用户界面。 **实验内容:** - 开发一个程序,实现对输入英文单词的字典排序功能。 - 用户界面包含两个文本域:一个用于输入单词,另一个用于显示排序后的结果。 - 包含两个按钮:...
本篇小结将聚焦于如何使用Java实现一个基本的画图板,同时提供相关的源码分析。 1. Java GUI基础 Java提供了丰富的类库用于创建GUI,主要在java.awt和javax.swing包下。在这个项目中,我们可能会使用`JFrame`作为主...
#### 六、小结 通过以上步骤,我们可以看到 `JButton` 在 Java Swing 中的应用非常灵活,不仅可以设置文本和图标,还可以自定义按钮的外观和行为。这对于创建用户友好的图形界面来说非常重要。掌握 `JButton` 的...
#### 18.6 小结 通过本章的学习,我们深入了解了AWT、Swing、SWT这三个主要的Java GUI库,以及如何使用它们来构建功能丰富且用户友好的图形界面。尽管Java的GUI开发并不是所有开发者都会接触到的领域,但对于那些...
同时,“工具”可能指的是使用Java Swing或JavaFX这样的图形库,它们提供了更高级的组件和更丰富的图形效果,但基础仍然是Canvas这样的底层绘图接口。 在压缩包中的"images"文件夹可能包含了一些示例图像或绘图结果...