`

Java图形组件Swing小结

 
阅读更多

Java图形组件Swing小结

 一、知识点小结

        Swingjava中的图形组件,主要用来开发图形界面的。Swing组件有两类,一类是容器类,表示可以装载其他的组件;另一类是元素类表示不可以装载其他的组件。在javax.swing包下的容器组件有JFrameJPanelJMenuBar,其中窗体是最大的容器组件,即窗体上可以添加面板,但面板上不能添加窗体;同包下常用的元素组件有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);//添加按钮成功
		
	}

}

 

 

完整程序运行结果如图

 

程序结束。

  • 大小: 145.2 KB
  • 大小: 8.6 KB
  • 大小: 118.8 KB
分享到:
评论

相关推荐

    Java_11 Swing图形界面设计1

    6. **本章小结** 学习Swing图形界面设计,我们需要掌握GUI的基本概念,了解AWT与Swing的区别,熟练使用各种组件,理解布局管理器的工作原理,并学会编写事件处理代码。Swing提供的组件丰富多样,能够满足创建复杂...

    Java程序设计 5.2 图形编程之swing.pptx

    ### 小结 Swing 作为一种强大的 GUI 构建工具,不仅为开发者提供了丰富的组件库,还提供了高级的功能和灵活的布局管理机制,极大地提高了开发效率。通过了解 Swing 的基础知识及其核心组件和容器,开发者可以快速...

    Java课程设计-基于swing的ATM智能柜员机带GUI界面(带实验报告).rar

    在本项目中,我们主要探讨的是使用Java Swing库来创建一个图形用户界面(GUI)的ATM智能柜员机模拟程序。Swing是Java提供的一个用于构建桌面应用程序的UI工具包,它允许开发者构建功能丰富的、交互式的用户界面。...

    第十八章 图形界面开发--AWT,Swing,SWT.pdf

    #### 18.6 小结 本章主要介绍了Java图形界面开发的基础知识和常用技术,包括AWT、Swing和SWT等。通过本章的学习,读者可以了解到图形界面开发的基本流程和技术要点,为进一步深入研究和实践打下坚实的基础。

    java Swing(容器,简单控件,布局管理器)

    Java Swing 是 Java 平台中用于构建图形用户界面(GUI)的一个强大库。它是在 Java 2.0 版本中引入的,作为对早期 Java AWT(Abstract Window Toolkit)库的增强和扩展。Swing 的主要优势在于其轻量级特性、丰富的...

    java图形编辑系统课程设计报告

    ### Java图形编辑系统课程设计报告知识点解析 #### 一、项目背景与目标 - **项目背景**:本项目为一门面向软件(多媒体)专业的课程设计作业,旨在通过实践加深学生对Java编程的理解,并掌握图形编辑系统的开发...

    Java学习事件机制小结

    在Java AWT(Abstract Window Toolkit)和Swing库中,事件处理主要基于观察者模式。当用户执行某个操作,如点击按钮,会触发一个事件。这个事件由事件源(通常是一个组件,如 JButton)产生,并被传递给一个或多个...

    JAVA清华大学教程

    ◇本讲小结 ◇课后习题 ★ 第二讲 Java语言基础知识 ◇课前索引 ◇2.1 简单数据类型 ◇2.2 运算符和表达式 ◇2.3 控制语句 ◇2.4 数组 ◇2.5 字符串的处理 ◇本讲小结 ◇课后习题 ★ 第三讲 Java语言...

    MyEclipse图形界面开发Swing_SWT

    #### 小结 通过以上内容的学习,我们了解到MyEclipse在图形界面开发方面提供了强大的支持。无论是使用AWT、Swing还是SWT,开发者都可以借助MyEclipse中的各种工具和插件来提高开发效率,创建出高质量的图形用户界面...

    JAVA 清华大学 教程

    ◇本讲小结 ◇课后习题 ★ 第二讲 Java语言基础知识 ◇课前索引 ◇2.1 简单数据类型 ◇2.2 运算符和表达式 ◇2.3 控制语句 ◇2.4 数组 ◇2.5 字符串的处理 ◇本讲小结 ◇课后习题 ★ 第三讲 Java语言...

    Java编程语言详细教程

    ◇本讲小结 ◇课后习题 ★ 第二讲 Java语言基础知识 ◇课前索引 ◇2.1 简单数据类型 ◇2.2 运算符和表达式 ◇2.3 控制语句 ◇2.4 数组 ◇2.5 字符串的处理 ◇本讲小结 ◇课后习题 ★ 第三讲 Java语言...

    基于Swing开发的贪吃蛇小游戏.zip

    7. 小结: 这个基于Swing的贪吃蛇游戏项目不仅展示了Swing组件的使用,还涵盖了基本的游戏编程概念,如定时器、绘图、事件处理和游戏逻辑。通过研究和实践这个项目,开发者可以深入理解Java GUI编程,并提升自己的...

    清华大学JAVA教程

    ◇本讲小结 ◇课后习题 ★ 第二讲 Java语言基础知识 ◇课前索引 ◇2.1 简单数据类型 ◇2.2 运算符和表达式 ◇2.3 控制语句 ◇2.4 数组 ◇2.5 字符串的处理 ◇本讲小结 ◇课后习题 ★ 第三讲 Java语言中...

    Java实验--贪心猪小游戏、输入输出流、图形化界面、图书管理系统.docx

    - 应用Swing组件实现简单的图形化用户界面。 **实验内容:** - 开发一个程序,实现对输入英文单词的字典排序功能。 - 用户界面包含两个文本域:一个用于输入单词,另一个用于显示排序后的结果。 - 包含两个按钮:...

    java学习小总结——画图板制作(附代码)

    本篇小结将聚焦于如何使用Java实现一个基本的画图板,同时提供相关的源码分析。 1. Java GUI基础 Java提供了丰富的类库用于创建GUI,主要在java.awt和javax.swing包下。在这个项目中,我们可能会使用`JFrame`作为主...

    Java swing 中JButton的使用

    #### 六、小结 通过以上步骤,我们可以看到 `JButton` 在 Java Swing 中的应用非常灵活,不仅可以设置文本和图标,还可以自定义按钮的外观和行为。这对于创建用户友好的图形界面来说非常重要。掌握 `JButton` 的...

    图形界面开发--AWT,Swing,SWT

    #### 18.6 小结 通过本章的学习,我们深入了解了AWT、Swing、SWT这三个主要的Java GUI库,以及如何使用它们来构建功能丰富且用户友好的图形界面。尽管Java的GUI开发并不是所有开发者都会接触到的领域,但对于那些...

    java画图板的总结

    同时,“工具”可能指的是使用Java Swing或JavaFX这样的图形库,它们提供了更高级的组件和更丰富的图形效果,但基础仍然是Canvas这样的底层绘图接口。 在压缩包中的"images"文件夹可能包含了一些示例图像或绘图结果...

Global site tag (gtag.js) - Google Analytics