天天看點

黑馬程式員 JAVA基礎--GUI

----------android教育訓練、java教育訓練、java學習型技術部落格、期待與您交流!------------

在此,分享一下自己學習JAVA的學習心得。有不對的地方請幫忙改正,也希望對想學java的同學有幫助!

JAVA基礎

        —GUI

GUI概述

GUI • Graphical User Interface(圖形使用者接口)。

    • 用圖形的方式,來顯示計算機操作的界面,這樣更友善更直 觀。 

CLI • Command line User Interface (指令行使用者接口) 

    • 就是常見的Dos指令行操作。 

    • 需要記憶一些常用的指令,操作不直覺。 

Awt與Swing

 • java.Awt:Abstract Window ToolKit (抽象視窗 工具包 ),需要調用本地系統方法實作功能。屬 重量級控件。  • javax.Swing:在AWT的基礎上,建立的一套圖 形界面系統,其中提供了更多的元件,而且完全 由Java實作。增強了移植性,屬輕量級控件。

繼承關系圖

黑馬程式員 JAVA基礎--GUI

Container:為容器,是一個特殊的元件,該元件中可以通過add 方法添加其他元件進來。

     布局管理器 

容器中的元件的排放方式,就是布局。

  常見的布局管理器: 

1).FlowLayout(流式布局管理器) 

從左到右的順序排列。 

2).Panel預設的布局管理器。 

3).BorderLayout(邊界布局管理器) 

東,南,西,北,中 •Frame預設的布局管理器。 

4).GridLayout(網格布局管理器) 

規則的矩陣 

5).CardLayout(卡片布局管理器) 

頁籤 

6).GridBagLayout(網格包布局管理器) 

非規則的矩陣

建立圖形化界面:

1,建立frame窗體。

2,對窗體進行基本設定。

比如大小,位置,布局。

3,定義元件。

4,将元件通過窗體的add方法添加到窗體中。

5,讓窗體顯示,通過setVisible(true)。

     事件監聽機制流程圖

黑馬程式員 JAVA基礎--GUI

事件監聽機制的特點:

1,事件源。

2,事件。

3,監聽器。

4,事件處理。

事件源:就是awt包或者swing包中的那些圖形界面元件。

事件:每一個事件源都有自己特有的對應事件和共性事件。

監聽器:将可以觸發某一個事件的動作(不隻一個動作)都已經封裝到了監聽器中。

視窗監聽器:WindowListener

事件:ActionListener

滑鼠事件:MouseListener

鍵盤事件:KeyListener

JAVA練習代碼:

import java.awt.Frame;
import java.awt.Menu;
import java.awt.MenuBar;
import java.awt.MenuItem;
import java.awt.TextArea;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

class MyMenuDemo{
	
	private Frame f;//視窗
	private MenuBar mb;//菜單欄
	private TextArea ta;//文本框區域
	private Menu m,submenu;//菜單
	private MenuItem closeItem,subItem,openItem,saveItem;//菜單條目
	private FileDialog openDia,saveDia;//對話框
	private File file;
	
	MyMenuDemo(){
		init();
	}
	
	public void init(){
		f = new Frame("my window");
		//設定視窗大小位置
		f.setBounds(300,100,500,600);//x, y, width, height
		//f.setLayout(new FlowLayout());		
		mb = new MenuBar();		
		ta = new TextArea();
		m = new Menu("檔案");			
		submenu = new Menu("子菜單");
		subItem = new MenuItem("子條目");		
		openItem = new MenuItem("打開");
		saveItem = new MenuItem("儲存");
		closeItem = new MenuItem("退出");
		
		m.add(openItem);
		m.add(saveItem);
		submenu.add(subItem);
		m.add(submenu);
		m.add(closeItem);		
		mb.add(m);		
		f.setMenuBar(mb);
		//對話框設定
		openDia = new FileDialog(f,"打開",FileDialog.LOAD);
		saveDia = new FileDialog(f,"儲存",FileDialog.SAVE);
		f.add(ta);
		myEvent();//事件
		f.setVisible(true);//
	}
	private void myEvent(){
		//打開事件
		openItem.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				openDia.setVisible(true);
				String dirPath = openDia.getDirectory();
				String fileName = openDia.getFile();
				if(dirPath == null || fileName == null)
					return;
				file = new File(dirPath,fileName);
				try {
					BufferedReader bufr = new BufferedReader(new FileReader(file));
					
					String line = null;
					while((line = bufr.readLine())!= null){
						ta.append(line + "\r\n");
					}
					bufr.close();
				} catch (FileNotFoundException e1) {
					e1.printStackTrace();
				} catch (IOException e2) {
					e2.printStackTrace();
				}
				
			}
		});
		//儲存事件
		saveItem.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				if(file == null)
				{
				saveDia.setVisible(true);
				String dirPath = saveDia.getDirectory();
				String fileName = saveDia.getFile();
				if(dirPath == null || fileName == null)
					return;
				file = new File(dirPath,fileName);
				}
				
				try {
					BufferedWriter bufw = new BufferedWriter(new FileWriter(file));
					
					String text = ta.getText();
					
					bufw.write(text);
					bufw.close();
				} catch (IOException e1) {
					e1.printStackTrace();
				}
			}
		});
		//關閉事件
		closeItem.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				System.exit(0);
			}
		});
		f.addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent e){
				System.exit(0);
			}
		});
		
	}
}
public class Demo {
	
	public static void main(String[] args) {
		new MyMenuDemo();
	}
}
           

繼續閱讀