siwng界面开发

目标:
1、掌握常用的swing类的使用方式
2、熟练使用API文档


1、介绍java的图形界面
1、awt     java.awt 
2、swing   javac.swing

2、常用的组件

容器组件
JFrame 窗体类 顶级容器
JPanel 面板类 次一级容器(最灵活的容器,可大可小)
JMenuBar 菜单栏
JMenu 菜单项
·····

元素组件
JLabel 标签类(可显示文字和图片)
JButton 按钮类(可显示文字和图片)
JTextField 文本输入类
JPasswordField 密码输入框类
JComboBox 下拉框类
JCheckBox 复选框类
JMenuItem 菜单
········

javax.swing

3、布局方法
1)流布局 Flowlayout JPanel的默认布局方式

流布局用于安排有向流中的组件,这非常类似于段落中的文本行。流的方向取决于容器的 componentOrientation 属性,它可能是以下两个值中的一个:
·ComponentOrientation.LEFT_TO_RIGHT
·ComponentOrientation.RIGHT_TO_LEFT
流布局一般用来安排面板中的按钮。它使得按钮呈水平放置,直到同一条线上再也没有适合的按钮。线的对齐方式由 align 属性确定。可能的值为:
·LEFT
·RIGHT
·CENTER
·LEADING
·TRAILING




2)边框布局 Borderlayout JFrame的默认布局方式

这是一个布置容器的边框布局,它可以对容器组件进行安排,并调整其大小,使其符合下列五个区域:北、南、东、西、中。每个区域最多只能包含一个组件,
并通过相应的常量进行标识:NORTH、SOUTH、EAST、WEST、CENTER。当使用边框布局将一个组件添加到容器中时,要使用这五个常量之一,若不指明
使用哪个常量,则默认为CENTER


3)网格布局 Gridlayout

GridLayout 类是一个布局处理器,它以矩形网格形式对容器的组件进行布置。容器被分成大小相等的矩形,一个矩形中放置一个组件。


4) GridBagLayout

·········

注:当一个容器内存在多种布局方式时,采用的是最后一种布局方式,前面的布局方式都被后面的覆盖掉。

通常一个界面不能只用一种布局方式完成,一般就是几种界面布局方式结合起来达到相应的要求。
结合相应组件的排列分析,划分不同的区域,在决定如何用哪种布局方式、怎么用。

当要调用awt或swing包下的某个组件、容器及相对应的方法时,必须引入相应的包名。当找某个组件的方法时,在该目录下找不到时,就到上一级父类下,
找相对应的方法,若还是找不到再到上一级父类方法中找,依次类推。
package cn.gxx.study05;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;

import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JPasswordField;

/**
 * 
 * @author Guanxianxiao
 *
 */

public class QQLogin {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		//实例化一个login类
		QQLogin login = new QQLogin();		
		//调用界面初始化函数
		login.initUI();

	}
	
	public void initUI(){
		JFrame jf = new JFrame();//实例化一个窗体
		
		jf.setUndecorated(true);//去掉边框
		
		//设置窗体的属性
		jf.setTitle("QQ登录界面");
		jf.setSize(380, 290);
		jf.setResizable(false);
		jf.setDefaultCloseOperation(3);
		jf.setLocationRelativeTo(null);
		
					
		//设置窗体的布局方式为边框布局
		BorderLayout jb = new BorderLayout();
		jf.setLayout(jb);
		
		//实例化一个背景对象
		ImageIcon image1 = new ImageIcon("images_05/1.jpg");
		JLabel jlb = new JLabel(image1);
		
		jlb.setBounds(0, 0, image1.getIconWidth(),image1.getIconHeight());// 设置JLabel组件的显示位置和大小;				
		
		jf.getLayeredPane().add(jlb, new Integer(Integer.MIN_VALUE));//将jlaBackground添加到JLayeredPane的底层
		
		JPanel contentPane = (JPanel)jf.getContentPane();//获取ContentPane对象
				
		contentPane.setOpaque(false);//设置ContentPane对象为透明
				
		
		//添加一个北边容器
		JPanel northpanel = northpanel();
		northpanel.setOpaque(false);//设置面板为透明
		
		northpanel.setPreferredSize(new Dimension(0,130));//设置容器的大小
		jf.add(northpanel,BorderLayout.NORTH);//设置容器为边框布局的北边
		
		//添加一个西边容器
		JPanel westpanel =  westpanel();
		westpanel.setOpaque(false);//设置面板为透明
		westpanel.setPreferredSize(new Dimension(105,0));//设置容器的大小
		jf.add(westpanel,BorderLayout.WEST);//设置容器为边框布局的北边
	
		//添加一个中部容器
		JPanel centerpanel = centerpanel();
		centerpanel.setOpaque(false);//设置面板为透明
		jf.add(centerpanel,BorderLayout.CENTER);//设置容器为边框布局的中部
		
		//添加一个南部容器
		JPanel southpanel = southpanel();
		southpanel.setOpaque(false);//设置面板为透明
		southpanel.setPreferredSize(new Dimension(380,50));//设置容器的大小
		jf.add(southpanel,BorderLayout.SOUTH);//设置容器为边框布局的中部
		
		
		jf.setVisible(true);
		
		
	}
	
	//设置北边容器
	public JPanel northpanel(){
		JPanel jp = new JPanel();
		jp.setPreferredSize(new Dimension(0,110));		
		
		FlowLayout fl = new FlowLayout(FlowLayout.RIGHT,0,0); 
		jp.setLayout(fl);
		
		ImageIcon image5 = new ImageIcon("images_05/5.jpg");
		JButton button5 = new JButton(image5);
		button5.setPreferredSize(new Dimension(27,19));		
		jp.add(button5);
		
		
		ImageIcon image6 = new ImageIcon("images_05/6.jpg");
		JButton button6 = new JButton(image6);
		button6.setPreferredSize(new Dimension(27,19));			
		jp.add(button6);
		
		ImageIcon image7 = new ImageIcon("images_05/7.jpg");
		JButton button7 = new JButton(image7);
		button7.setPreferredSize(new Dimension(36,19));			
		jp.add(button7);
		return jp;	
	}
	
	
	//设置西边容器
	public JPanel westpanel(){
		JPanel jp = new JPanel();//实例化一个容器		
		FlowLayout fl2 = new FlowLayout(FlowLayout.RIGHT);//设置西边容器的布局方式为流布局 居右的方式
		jp.setLayout(fl2);	//为容器添加流布局布局方式	
		ImageIcon image2 = new ImageIcon("images_05/2.jpg");//实例化一个ImageIcon对象
		JLabel jl2 = new JLabel(image2);//实例化一个JLabel对象,并添加图片
		jp.add(jl2);//将标签对象加到容器中			
		return jp;	
	}
	
	
	//设置中间容器
	public JPanel centerpanel(){
		JPanel jp = new JPanel();//实例化一个容器
		
		FlowLayout fl = new FlowLayout(FlowLayout.LEFT);
		jp.setLayout(fl);
		
		JComboBox jc = new JComboBox();//实例化一个下拉框
		jc.addItem("769938510");//设置初始值
		jc.setPreferredSize(new Dimension(188,25));
		jp.add(jc);			
		JLabel jb1 = new JLabel("注册账号");//实例化一个标签
		jb1.setPreferredSize(new Dimension(60,25));
		jp.add(jb1);
		JPasswordField jpw1 = new JPasswordField();//实例化一个密码输入框
		jpw1.setPreferredSize(new Dimension(188,25));
		jp.add(jpw1);
		JLabel jb2 = new JLabel("找回密码");//实例化一个标签
		jb2.setPreferredSize(new Dimension(60,25));
		jp.add(jb2);
		JCheckBox jcb1 = new JCheckBox("记住密码");
		JCheckBox jcb2 = new JCheckBox("自动登录");
		jp.add(jcb1);
		jp.add(jcb2);
		
		return jp;
	}
	
	
	//设置南边容器
	public JPanel southpanel(){
		JPanel jp = new JPanel();//实例化一个容器
		
		FlowLayout fl = new FlowLayout();
		jp.setLayout(fl);
		
		ImageIcon image3 = new ImageIcon("images_05/3.jpg");
		JButton jb = new JButton(image3);
		jb.setPreferredSize(new Dimension(157,33));		
		jp.add(jb);	
		return jp;
	}

}


界面还存在一些问题 如:不能移动,不能关闭窗体。
后续学过事件后会完善相关操作

你可能感兴趣的:(java,swing)