java學習之Swing篇(一)——QQ登錄界面

前段時間學習了圖形用戶界面,博客一直沒時間寫,現在補上。

一、AWT與Swing

我們知道,java針對GUI設計提供了豐富的類庫,而這些類均位於AWT和Swing這兩個包中。

AWT(Abstract Window ToolKit 抽象窗口工具包):SUN公司最早推出的一套API,需要調用本地系統方法實現功能,屬重量級控件。

Swing:在AWT的基礎上,建立的一套圖形界面系統,其中提供了更多的組件,而且完全由Java實現。增強了移植性,屬輕量級控件。

二、AWT繼承體系

AWT中組建可分爲兩個大類,分別爲Component和MenuComponent。

MenuComponent:是所有與菜單相關組件的父類;

Component:除菜單外,其它AWT組件的父類,通常被稱爲組件,根據作用不同分爲基本組件和容器組件。

基本組件:諸如按鈕、文本框之類的圖形界面元素,是可以使用的組件,但是必須依賴容器。

容器組件:是可以存儲基本組件和容器組件的組件。

    注:圖片來源於《Java基礎入門》

 

三、事件監聽機制

事件源(組件):事件發生的場所,通常就是產生事件的組件;

監聽器(Listener):負責監聽事件源上發生的的事件,並對各種事件作出相應處理的對象(對象中包含事件處理器);

事件對象:封裝了GUI組件上發生的特定事件(通常就是用戶的一次操作);

事件處理器:監聽器對象對接收的事件對象進行相應處理的方法。

四、QQ登錄界面設計

實現要求:

1、仿QQ登錄界面設計;

2、添加背景圖片;

3、添加文本框、按鈕、複選框等功能組件;

4、實現帳號密碼驗證;

5,驗證成功彈出”歡迎登錄“界面,失敗提醒”帳號密碼錯誤“。

具體代碼如下:

QQ登錄主界面設計

package com.Liao.Login0626;

public class Login {

	public static void main(String[] args) {
		Login log=new Login();
		log.showFrame();
	}
	
	public void showFrame(){
		//構造一個窗體
		javax.swing.JFrame frame=new javax.swing.JFrame();
		//設置標題
		frame.setTitle("qq");
		//設置窗體大小
		frame.setSize(360, 450);
		//設置窗體居中
		frame.setLocationRelativeTo(null);
		//設置退出方式
		frame.setDefaultCloseOperation(3);
	
		//窗體佈局格式(流式佈局管理器)
		java.awt.FlowLayout fl=new java.awt.FlowLayout();
		frame.setLayout(fl);
		
		//添加圖片
		javax.swing.ImageIcon icon=new javax.swing.ImageIcon("D:\\develop\\0.jpg");
		//添加標籤
		javax.swing.JLabel jla=new javax.swing.JLabel(icon);
		frame.add(jla);
		
		
		//添加文本框
		javax.swing.JTextField jta_name1=new javax.swing.JTextField();
		//設置文本框大小
		java.awt.Dimension d1=new java.awt.Dimension(200,30);
		jta_name1.setPreferredSize(d1);
		//將文本框加至窗口
		frame.add(jta_name1);
		
		//創建按鈕
		javax.swing.JButton bu_register=new javax.swing.JButton("註冊帳號");
		java.awt.Dimension d2=new java.awt.Dimension(100,30);
		bu_register.setPreferredSize(d2);
		frame.add(bu_register);
		
		//添加文本框
		javax.swing.JTextField jta_name2=new javax.swing.JTextField();
		java.awt.Dimension d3=new java.awt.Dimension(200,30);
		jta_name2.setPreferredSize(d3);
		frame.add(jta_name2);
		
		//創建按鈕
		javax.swing.JButton bu_sec=new javax.swing.JButton("找回密碼");
		java.awt.Dimension d4=new java.awt.Dimension(100,30);
		bu_sec.setPreferredSize(d4);
		frame.add(bu_sec);
		
		//記住密碼複選框
		javax.swing.JCheckBox jcb1=new javax.swing.JCheckBox("記住密碼");
		frame.add(jcb1);
		
		//找回密碼複選框
		javax.swing.JCheckBox jcb2=new javax.swing.JCheckBox("找回密碼");
		frame.add(jcb2);
		
		//創建按鈕
		javax.swing.JButton bu_login=new javax.swing.JButton("登錄");
		java.awt.Dimension d5=new java.awt.Dimension(300,30);
		bu_login.setPreferredSize(d5);
		frame.add(bu_login);
		
	    //設置窗體顯示出來
		frame.setVisible(true);
		
		//創建監聽器
		ButtonListener bl=new ButtonListener();
		//給按鈕加監聽器
		bu_login.addActionListener(bl);
		
		//將文本框對象及窗口對象傳至按鈕監聽器類
		bl.setJt1(jta_name1);
				
		bl.setJt2(jta_name2);
		
		bl.setJt3(frame);
	}
}

按鈕監聽器

package com.Liao.Login0626;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JTextField;

public class ButtonListener implements ActionListener {

	private JFrame jf;
	private JTextField jt1;
	private JTextField jt2;

	public void setJt3(JFrame jframe) {
		jf = jframe;
	}

	public void setJt1(JTextField jtext) {
		jt1 = jtext;
	}

	public void setJt2(JTextField jtext) {
		jt2 = jtext;
	}

	public void actionPerformed(ActionEvent e) {
		String name1 = jt1.getText();// 輸入的帳號
		String name2 = jt2.getText();// 輸入的密碼
		//創建歡迎窗口對象
		Welcome wel = new Welcome();
		//設置QQ登錄主界面窗口不可見
		jf.setVisible(false);
		//帳號密碼正確彈出歡迎窗口,錯誤彈出確認信息
		if ("123".equals(name1) && "456".equals(name2)) {
			wel.show();
		} else {
			JOptionPane pane = new JOptionPane();
			JOptionPane.showMessageDialog(pane, "帳號密碼錯誤");
		}

	}
}

歡迎登錄窗口界面

package com.Liao.Login0626;

import java.awt.Font;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.SwingConstants;

public class Welcome {
	public void show() {
		JFrame jf = new JFrame("Result");
		// 設置窗體大小
		jf.setSize(360, 450);
		// 設置窗體居中
		jf.setLocationRelativeTo(null);
		// 設置退出方式
		jf.setDefaultCloseOperation(3);

		JLabel jl = new JLabel("歡迎登錄", SwingConstants.CENTER);
		jl.setFont(new Font("宋體", Font.BOLD, 30));
		jf.add(jl);
		jf.setVisible(true);
	}
}

 就這樣,一個簡單的QQ登錄界面就完成了,至於後面其它功能的實現則需要進一步的學習,敬請期待!

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章