Swing登陆界面开发
一、Java的图形界面
Swing为Java图形界面提供各种组件,像菜单栏、输入框、按钮等等。
Swing调用组件基本格式:
javax.swing.XXXX

二、常用的组件
1)容器组件:
(1)窗体类JFrame
例如: javax.swing.JFrame frame=new javax.swing.JFrame();
还可以这样 JFrame frame=new JFrame(); 然后按shift+ctrl+o
(2)面板类JPanel
例如: JPanel panel=new JPanel();
(3)菜单栏JMenuBar
例如:JMenuBar jm=new JMenubar();

2)元素组件
(1)标签类JLabel
例如: JLabel jla=new JLabel();
标签中可以显示图片
例如: ImageIcon image=new ImageIcon(“images/1.jpg”);
JLabel jla=new JLabel(image);
(2)按钮类JButton
例如: JButton jb=JButton(“开始”);
(3)输入框类JTextField
例如: JTextField te=new JTextField();
(4)密码输入框类 JPasswordField
例如: JPasswordField jp=new JPasswordField();
(5)下拉框类JComboBox
例如: JComboBox jc=new JComboBox();
(6)复选框类JCheckBox
例如: JCheckBox jc=new JCheckBox();
(7)菜单类JMenuItem
例如: JMenuItem jm=new JMenuItem();
三、常用的布局
(1)边框布局BorderLayout (默认)
将容器分为东西南北中五部分,每部分又可独自添加容器。
例如: BorderLayout bo=new BorderLayout();
frame.setLayut(bo);
frame.add(panel,BorderLayout.WEST);
(2)流式布局FlowLayout
默认从中见对齐往两边扩散,直至一行满了转到下一行
例如: FlowLayout fl=new FlowLayout(FlowLayout RIGHT);
frame.setLayout(fl);

(3)网格布局GridLayout
例如:GridLayout gr=new GridLayout(4,5); 四行五列
所有以Layout结尾的类都是布局类。

(4)绝对布局 Dimension
可精确设置各组件大小
例如: panel.setPerferredSize(new Dimension(500,200));

四、界面实现
实现界面的步骤:
1.定义类,在类中定义主函数和初始化界面的方法.
2.在初始化界面的方法中,实例化一个JFrame窗体类的对象.
3.设置窗体对象的属性值
4.实例化布局对象并且设置窗体容器的布局方式.
5.实例化对象容器或者元素组件的对象,让后将对象添加到窗体上.
6.在主函数中实例化类的对象,然后调用初始化界面的方法
一种布局往往难以实现设计要求,所以要灵活运用整体的布局和各容器的布局。


课后实践 1.QQ2012登陆界面
2.计算器界面
源代码:
QQ登陆界面:

import java.awt.BorderLayout; 

import java.awt.Dimension; 

import java.awt.FlowLayout; 


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.JTextField; 


public class Login { 


 /** 

 * @param args 

 */ 

 public static void main(String[] args) { 

 // TODO Auto-generated method stub 

 //实例化一个对象 

 Login log=new Login(); 

 //调用显示窗体的方法 

 log.showFrame(); 

 } 

 //定义显示窗体的方法 

 public void showFrame(){ 

 //实例化一个窗体对象 

 JFrame frame=new JFrame(); 

 //设置窗体的属性 

 frame.setTitle("QQ2012");//设置窗体标题 

 frame.setSize(380,280);//设置窗体大小 

 frame.setLocation(300,300);//设置窗体显示位置 

 frame.setDefaultCloseOperation(3);//设置默认关闭操作3关闭窗口时退出程序 

 frame.setResizable(false);//设置不能改变窗体大小 

 //实例化一个图像对象 

 ImageIcon background=new ImageIcon("images/2.jpg"); 

 //实例化一个标签对象 

 JLabel lab=new JLabel(background); 

 //设置标签显示位置和大小 

 lab.setBounds(0, 0,background.getIconWidth(), background.getIconHeight()); 

 //将标签添加到JLayeredPane的底层 

 frame.getLayeredPane().add(lab,new Integer(Integer.MIN_VALUE)); 

 //获取ContentPane对象 

 JPanel contentPane=(JPanel)frame.getContentPane(); 

 //设置contentPane为透明 

 contentPane.setOpaque(false); 



 //默认为边框布局,这两行可省略 

 //BorderLayout bo=new BorderLayout(); 

 //frame.setLayout(bo); 


 //实例化一个西部面板对象 

 JPanel westPane=westPane(); 

 //添加西部面板至边框西部 

 frame.add(westPane,BorderLayout.WEST); 

 //实例化一个中部面板对象 

 JPanel centerPane=centerPane(); 

 //添加中部面板至边框中部 

 frame.add(centerPane,BorderLayout.CENTER); 

 //实例化一个南部面板对象 

 JPanel southPane=southPane(); 

 //添加南部面板至边框南部 

 frame.add(southPane,BorderLayout.SOUTH); 

 //实例化一个北部面板对象 

 JPanel northPane=northPane(); 

 //添加北部面板至边框北部 

 frame.add(northPane,BorderLayout.NORTH); 



 //设置窗体可见 

 frame.setVisible(true); 

 } 

 //定义一个创建西部面板的方法,返回值为面板 

 public JPanel westPane(){ 

 //实例化一个面板对象 

 JPanel panel=new JPanel(); 

 //设置面板透明 

 panel.setOpaque(false); 

 //设置面板大小,西部面板只能设置宽度 

 panel.setPreferredSize(new Dimension(105,0));//使用绝对布局设置面板大小 

 //实例化一个流布局对象并使其为右对齐 

 FlowLayout fl=new FlowLayout(FlowLayout.RIGHT); 

 panel.setLayout(fl);//设置面板为流布局 

 //实例化一个图标对象 

 ImageIcon image=new ImageIcon("images/1.jpg");//将图片添加到图片对象 

 //实例化一个标签对象 

 JLabel jla=new JLabel(image);//将图标放入标签 

 //将标签添加到面板 

 panel.add(jla); 

 //返回一个面板值 

 return(panel); 

 } 

 //定义一个创建中部面板的方法,返回值为面板 

 public JPanel centerPane(){ 

 //实例化一个面板对象 

 JPanel panel=new JPanel(); 

 //设置面板透明 

 panel.setOpaque(false); 

 //实例化一个流布局对象并使其左对齐 

 FlowLayout fl=new FlowLayout(FlowLayout.LEFT); 

 panel.setLayout(fl);//设置面板布局为流布局 

 //实例化一个下拉框对象 

 JComboBox jcb=new JComboBox(); 

 jcb.addItem("522517457");//添加选择内容 

 jcb.setEditable(true);//设置可编辑 

 jcb.setPreferredSize(new Dimension(192,25));//设置大小,用绝对布局精确设置大小 

 panel.add(jcb);//添加下拉框组件至面板 

 //实例化一个标签对象 

 JLabel jla=new JLabel("注册账号"); 

 panel.add(jla);//添加标签至面板 

 //实例化一个输入框对象 

 JTextField jte=new JTextField(); 

 jte.setPreferredSize(new Dimension(192,25));//设置大小,用绝对布局精确设置大小 

 panel.add(jte);//添加输入框至面板 

 //实例化一个标签 

 JLabel jla1=new JLabel("找回密码"); 

 panel.add(jla1);//添加标签纸面板 

 //实例化两个复选框 

 JCheckBox jche=new JCheckBox("记住密码"); 

 JCheckBox jche1=new JCheckBox("自动登录"); 

 jche.setOpaque(false);//设置复选框为透明 

 jche1.setOpaque(false);//设置复选框为透明 

 panel.add(jche);//添加复选框至面板 

 panel.add(jche1);//添加复选框至面板 

 //返回面板值 

 return(panel); 

 } 

 //定义一个创建南部面板的方法,返回值为面板 

 public JPanel southPane(){ 

 //实例化一个面板对象 

 JPanel panel=new JPanel(); 

 //设置面板为透明 

 panel.setOpaque(false); 

 //实例化一个流布局对象 

 FlowLayout fl=new FlowLayout(); 

 panel.setLayout(fl);//设置面板布局为流布局 

 //实例化一个按钮对象 

 JButton jb=new JButton("登 陆"); 

 panel.add(jb);//添加按钮至面板 

 //返回面板 

 return(panel); 

 } 

 //定义一个创建背部面板的方法,返回值为面板 

 public JPanel northPane(){ 

 //实例化一个面板对象 

 JPanel panel=new JPanel(); 

 //设置面透明 

 panel.setOpaque(false); 

 //设置面板大小 

 panel.setPreferredSize(new Dimension(0,100));//使用绝对布局设置面板大小 

 //返回面板 

 return(panel); 

 } 

}



计算器界面:

import java.awt.BorderLayout; 

import java.awt.Button; 

import java.awt.Dimension; 

import java.awt.FlowLayout; 

import java.awt.GridLayout; 


import javax.swing.JFrame; 

import javax.swing.JPanel; 

import javax.swing.JTextField; 


public class Calculator { 


 /** 

 * @param args 

 */ 

 public static void main(String[] args) { 

 // TODO Auto-generated method stub 

 //实例化一个计算器对象 

 Calculator cal=new Calculator(); 

 cal.showFrame();//调用显示界面的方法 

 } 

 public void showFrame(){ 

 //实例化一个窗体对象 

 JFrame frame=new JFrame(); 

 //设置窗体属性 

 frame.setTitle("计算器");//设置窗体标题 

 frame.setSize(490, 295);//设置窗体大小 

 frame.setLocation(300, 300);//设置窗体显示的位置 

 frame.setResizable(false);//设置不可改变窗体大小 

 frame.setDefaultCloseOperation(3);//设置关闭窗口时程序退出 


 //JFrame默认BorderLayout边框布局 


 //实例化一个北部面板 

 JPanel northPane=northPane(); 

 //添加到边框布局的北部 

 frame.add(northPane,BorderLayout.NORTH); 

 //实例化一个西部面板 

 JPanel westPane=westPane(); 

 //添加到边框布局的西部 

 frame.add(westPane,BorderLayout.WEST); 

 //实例化一个中部面板 

 JPanel centerPane=centerPane(); 

 //添加到边框布局的中部 

 frame.add(centerPane,BorderLayout.CENTER); 

 //实例化一个东部面板 

 JPanel eastPane=eastPane(); 

 //添加到边框布局的西部 

 frame.add(eastPane,BorderLayout.EAST); 


 //设置窗体为可见 

 frame.setVisible(true); 

 } 

 //定义一个创建北部面板的方法,返回值为面板类 

 public JPanel northPane(){ 

 //实例化一个面板 

 JPanel panel=new JPanel(); 

 //实例化一个流布局对象 

 FlowLayout fl=new FlowLayout(); 

 panel.setLayout(fl);//设置面板为流布局 

 //实例化一个输入框对象 

 JTextField jte=new JTextField(); 

 jte.setPreferredSize(new Dimension(455,45));//使用绝对布局设置输入框大小 

 panel.add(jte);//添加输入框至面板 

 //返回面板 

 return(panel); 

 } 

 //定义一个创建西部面板的方法,返回值为面板类 

 public JPanel westPane(){ 

 //实例化一个面板对象 

 JPanel panel=new JPanel(); 

 //设置面板大小 

 panel.setPreferredSize(new Dimension(140,0)); 

 //实例化一个网格布局对象 

 GridLayout gr=new GridLayout(5,2); 

 panel.setLayout(gr);//设置面板为网格布局 

 //添加各种按钮 

 panel.add(new Button("sin")); 

 panel.add(new Button("ln")); 

 panel.add(new Button("cos")); 

 panel.add(new Button("log")); 

 panel.add(new Button("tan")); 

 panel.add(new Button("e")); 

 panel.add(new Button("π")); 

 panel.add(new Button("^")); 

 panel.add(new Button("!")); 

 panel.add(new Button("√")); 

 //返回面板 

 return(panel); 

 } 

 //定义一个创建中部面板的方法,返回值为面板类 

 public JPanel centerPane(){ 

 //实例化一个面板对象 

 JPanel panel=new JPanel(); 

 //实例化一个网格布局的对象 

 GridLayout gr=new GridLayout(4,5);//四行五列 

 panel.setLayout(gr);//设置为网格布局 

 //添加各种按钮 

 panel.add(new Button("7")); 

 panel.add(new Button("8")); 

 panel.add(new Button("9")); 

 panel.add(new Button("÷")); 

 panel.add(new Button("←")); 

 panel.add(new Button("4")); 

 panel.add(new Button("5")); 

 panel.add(new Button("6")); 

 panel.add(new Button("×")); 

 panel.add(new Button("(")); 

 panel.add(new Button("1")); 

 panel.add(new Button("2")); 

 panel.add(new Button("3")); 

 panel.add(new Button("-")); 

 panel.add(new Button(")")); 

 panel.add(new Button("0")); 

 panel.add(new Button("00")); 

 panel.add(new Button(".")); 

 panel.add(new Button("+")); 

 panel.add(new Button("=")); 

 //返回面板 

 return(panel); 

 } 

 //定义一个创建栋部面板的方法,返回值为面板类 

 public JPanel eastPane(){ 

 //实例化一个面板对象 

 JPanel panel=new JPanel(); 

 //设置面板大小 

 panel.setPreferredSize(new Dimension(10,0)); 

 //返回面板 

 return(panel); 

 } 

}