欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Java图形组件Swing小结

程序员文章站 2024-01-31 12:23:58
...

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小结

 

程序结束。