`

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

    第九章 Swing图形用户界面9.1 概述9.2 容器组件9.3 基本组件9.4 布局管理器9.5 事件处理模型9.6 本章小结9.1 概述图形用户界面(GUI

    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语言...

    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语言中...

    Java语言的科学与艺术 斯坦福大学经典教材

    第10章 事件驱动程序 10.1 Java事件模型 10.2 简单的事件驱动程序 10.3 响应鼠标事件 10.4 响应键盘事件 10.5 创建简单的GUI 10.6 Swing 交互器层次结构 10.7 管理组件布局 10.8 使用TableLayout类 10.9 小结 ...

    Java语言的科学与艺术(国外计算机科学经典教材)

     1.8 小结  1.9 复习题 第2章 编程示例  2.1 “Hello world”程序  2.2 编程过程的观点  2.3 两数相加的程序  2.4 编程习语和模式  2.5 类和对象  2.6 图形程序  2.7 小结  2.8 复习题  2.9 编程练习 第3...

    Java典型模块

    1.4 小结 第2章 Java面向对象编程 2.1 面向对象的一些概念 2.1.1 面向对象涉及的概念 2.1.2 类和对象 2.2 面向对象的一些特性 2.2.1 继承特性 2.2.2 多态特性 2.2.3 封装特性 2.3 Java中实现的面向对象特性 2.3.1 ...

    JAVA入门1.2.3:一个老鸟的JAVA学习心得 PART1(共3个)

    3.4 小结:基本数据类型—— Java中一切数据和运算的基础 63 3.5 习题 65 第4章 Java中的程序执行流程 67 教学视频:1小时57分钟 4.1 顺序执行 67 4.2 使用if-else让程序懂得判断 68 4.2.1 if语句 68 4.2.2 ...

    Java入门1·2·3:一个老鸟的Java学习心得.PART3(共3个)

    3.4 小结:基本数据类型—— Java中一切数据和运算的基础 63 3.5 习题 65 第4章 Java中的程序执行流程 67 教学视频:1小时57分钟 4.1 顺序执行 67 4.2 使用if-else让程序懂得判断 68 4.2.1 if语句 68 4.2.2 ...

    疯狂JAVA讲义

    1.9 本章小结 22 本章练习 22 第2章 理解面向对象 23 2.1 面向对象 24 2.1.1 结构化程序设计简介 24 2.1.2 程序的三种基本结构 25 2.1.3 面向对象程序设计简介 27 2.1.4 面向对象的基本特征 28 2.2 UML...

    java基础案例与开发详解案例源码全

    3.7.6 循环语句小结78 3.7.7 break语句79 3.7.8 continue语句82 3.8 JavaDebug技术84 3.9 本章练习85 第4章 4.1 一维数组90 4.1.1 为什么要使用数组90 4.1.2 什么是数组91 4.1.3 如何使用数组92 4.1.4 经验之谈-数组...

    Java开发技术大全 电子版

    1.5本章小结18 第2章Java语言基础19 2.1Java语言的特点19 2.2Java程序的构成21 2.3数据类 型23 2.3.1基本数据类型23 2.3.2常量25 2.3.3变量26 2.3.4整型数据27 .2.3.5浮点型数据29 2.3.6字符型数据30 ...

    java范例开发大全源代码

    第1篇 Java编程基础  第1章 Java开发环境的搭建(教学视频:9分钟) 2  1.1 理解Java 2  1.2 搭建Java所需环境 3  1.2.1 下载JDK 3  1.2.2 安装JDK 4  1.2.3 配置环境 5  1.2.4 测试JDK配置...

    java范例开发大全

    第1篇 Java编程基础 第1章 Java开发环境的搭建(教学视频:9分钟) 2 1.1 理解Java 2 1.2 搭建Java所需环境 3 1.2.1 下载JDK 3 1.2.2 安装JDK 4 1.2.3 配置环境 5 1.2.4 测试JDK配置是否成功 7 实例1 开发第一个Java...

    Java范例开发大全 (源程序)

    第1篇 Java编程基础  第1章 Java开发环境的搭建(教学视频:9分钟) 2  1.1 理解Java 2  1.2 搭建Java所需环境 3  1.2.1 下载JDK 3  1.2.2 安装JDK 4  1.2.3 配置环境 5  1.2.4 测试JDK配置是否成功 7...

Global site tag (gtag.js) - Google Analytics