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);

		
		
		
	}

}

 

运行结果如图:

Java图形组件Swing小结

 

2.在窗体的中,西,南,北四个方位分别添加面板,初步布局如下图:

 Java图形组件Swing小结

 

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);//添加按钮成功
		
	}

}

 

 

完整程序运行结果如图

Java图形组件Swing小结

 

程序结束。

你可能感兴趣的:(swing)