图形开发界面总结

6月27日总结(图形开发界面)
这节课主要讲了图形开发界面。通过这节课我掌握了java提供的组件和布局API类,同时我学会了如何查询API文档。

首先,java里面有两大图形界面类:1、awt 2、swing;他俩最大区别是swing可以跨平台,提供了很大的方便。

javax.swing里面常用的容器组件有两种JFrame(窗体容器)和JPanel(面板容器)。其中,窗体是最基础的,所有的元素组件必须放在窗体上才能显示出来。常用的元素组建有JLabel、JTextField、JPasswordField、JComboBox、JCheckBox、JButton等等。其中要注意的是如果要用这些窗体或者组件要首先实例化才能使用,而且必须将窗体设置为可见,否则不能看见。

java.awt里面常用的布局类型有3种:BorderLayout、FlowLayout和GridLayout。和组件类相似,用布局类型的时候必须要先实例化才能使用。其中JFrame默认的布局类型是BorderLayout(边框布局),而JPanel的默认类型则为FlowLayout(流式布局)。

在今天的登陆界面的练习中,我遇到了几个问题,首先是页面的布局,总是调不成我想要的布局。然后我通过JPanel在边框布局的JFrame上的应用解决了这个问题,但是还是无法调整东边和西边的大小。
package Login;import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.GridLayout;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JSeparator;

//定义一个Login类
public class Login {
	
	//定义函数的入口
	public static void main(String[] args) {
		
		//实例化一个Login类
		Login lo = new Login();
		
		//调用初始化函数
		lo.unitGUI();

	}
	
	//定义一个unitGUI初始化函数
	public void unitGUI(){
		
		//实例化一个窗体类型
		JFrame jf = new JFrame();
		
		//点击窗体关闭的时候退出程序
		jf.setDefaultCloseOperation(3);
		
		//设置窗体大小
		jf.setSize(400, 300);
		
		//设置窗体位置
		jf.setLocation(470, 250);
		
		//设置窗体标题
		jf.setTitle("QQ登录界面");
		
		// 设置窗口显示在屏幕的中央
		jf.setLocationRelativeTo(null);
		
		// 设置禁止调整窗体的大小
		jf.setResizable(false);
		
		//jf.setUndecorated(true);
		//设置布局
		BorderLayout bor = new BorderLayout();
		jf.setLayout(bor);
		
		//把jpanel类添加到jframe上
		JPanel west = West();
		jf.add(west,BorderLayout.WEST);
		
		
		
		//添加JPanel到JFrame上
		JPanel east = East();
		jf.add(east,BorderLayout.EAST);
	
		//将JPanel添加到JFrame上
		JPanel center = Center();
		jf.add(center,BorderLayout.CENTER);
		
		

		JPanel south = South();
		jf.add(south,BorderLayout.SOUTH);
		
		
		//添加一个文本框在上部
		JPanel north = North();
		jf.add(north,BorderLayout.NORTH);
		
		
		
		
		//设置背景图片 
		ImageIcon bjImage = new ImageIcon("Login/beijing.jpg");
		JLabel beijing = new JLabel(bjImage);
		//设置便签的大小
		beijing.setBounds(0, 0,bjImage.getIconWidth(),bjImage.getIconHeight());
		//将便签添加到LayeredPane的最底层
		jf.getLayeredPane().add(beijing,new Integer(Integer.MIN_VALUE));
		//将LayeredPane上一层面板设置为透明
		JPanel contentPanel = (JPanel)jf.getContentPane();
		//设置面板为透明
		contentPanel.setOpaque(false);
		north.setOpaque(false);
		center.setOpaque(false);
		east.setOpaque(false);
		west.setOpaque(false);
		south.setOpaque(false);
		
		//设置窗体为可见
		jf.setVisible(true);
		
	}
	
	public JPanel West(){
		//实例化一个JPanel类
				JPanel jp = new JPanel();
				
				//设置布局
				jp.setLayout(new FlowLayout(FlowLayout.LEFT,0,50));
				//设置大小
				jp.setPreferredSize(new Dimension(110,0));
				//添加一个按钮在西边
				jp.add(new JLabel("     "));
				JButton jbu = new JButton(new ImageIcon("Login/touxiang.jpg"));
				jbu.setPreferredSize(new Dimension(80,80));

				jp.add(jbu);
				return jp;
	}
	
	public JPanel East(){
		//实例化一个JPanel类
				JPanel jp = new JPanel();
				//GridLayout gri1 = new GridLayout(7,1);
				//jp.setLayout(gri1);
				//设置布局
				jp.setLayout(new FlowLayout(FlowLayout.CENTER,0,19));
				//设置大小
				jp.setPreferredSize(new Dimension(110,0));
				//添加两个按钮在东边

				jp.add(new JLabel("                      "));

				JButton jbu1 = new JButton("注册帐号");
				jp.add(jbu1);

				JButton jbu2 = new JButton("找回密码");
				jp.add(jbu2);
				return jp;
	}
	
	public JPanel Center(){
		
		//实例化一个JPanel类的对象
				JPanel jp2 = new JPanel();
				jp2.setLayout(new GridLayout(6,1));
				
				javax.swing.JLabel jl5 = new javax.swing.JLabel();
				jp2.add(jl5);
				javax.swing.JLabel jl6 = new javax.swing.JLabel();
				jp2.add(jl6);
				//添加一个下拉框在中部
				javax.swing.JComboBox jco = new javax.swing.JComboBox();
				//为下拉框添加项目
				jco.addItem("121727544");
				jco.addItem("334715693");
				jco.addItem("296299367");
				jp2.add(jco);
				javax.swing.JLabel jl7 = new javax.swing.JLabel();
				jp2.add(jl7);
				//添加一个密码框在中部
				javax.swing.JPasswordField jpa = new javax.swing.JPasswordField(10);
				jp2.add(jpa);
				//添加两个复选框
				javax.swing.JPanel jp4 = new javax.swing.JPanel();
				jp4.setLayout(new GridLayout(1,2));
				javax.swing.JCheckBox jch1 = new javax.swing.JCheckBox("记住密码");
				jch1.setOpaque(false);
				jp4.add(jch1);
				javax.swing.JCheckBox jch2 = new javax.swing.JCheckBox("自动登录");
				jch2.setOpaque(false);
				jp4.add(jch2);
				jp4.setOpaque(false);
				jp2.add(jp4);
				
				return jp2;
	}
	
	public JPanel South(){
		//实例化一个Jpanel
		JPanel jp3 = new JPanel();

		//添加一个按钮在南部
		JButton jbu3 = new JButton("登录");
		jp3.add(jbu3);
		return jp3;
	}
	
	public JPanel North(){
		javax.swing.JPanel jp5 = new javax.swing.JPanel();
		java.awt.GridLayout gri3 = new java.awt.GridLayout(3,1);
		jp5.setLayout(gri3);
		jp5.setPreferredSize(new Dimension(0,70));
		jp5.add(new JLabel("       "));
		javax.swing.JLabel jl1 = new javax.swing.JLabel("追梦.设计    ");
		jl1.setFont(new Font("华文行楷",Font.BOLD,30));
		jp5.add(jl1);
		javax.swing.JLabel jl10 = new javax.swing.JLabel("            ——幸福因为有你在");
		jl10.setFont(new Font("华文行楷",Font.BOLD,23));
		jp5.add(jl10);
		return jp5;
	}

}


你可能感兴趣的:(总结)