黑馬程序員_GUI

               ------ android培訓java培訓java學習型技術博客、期待與您交流! ----------


          圖形化界面

1 概念:

    GUIGraphical User Interface的縮寫,圖形用戶接口

    CLICommand line User Interface的縮寫 ,命令行用戶接口,就是常見的Dos命令行操作。需要記憶一些常用的命令,操作不直觀。

如:創建文件夾,或者刪除文件夾等

2    AwtSwing

JavaGUI提供的對象都存在java.Awtjavax.Swing兩個包中。

 java.AwtAbstract Window ToolKit (抽象窗口工具包),依賴於本地系統平臺,如顏色樣式顯示。屬重量級控件。

javax.Swing:在AWT的基礎上,建立的一套圖形界面系統,其中提供了更多的組件,而且完全由Java實現。

     增強了移植性,跨平臺,屬輕量級控件。

    

3    繼承關係:

Component:是GUI圖形界面的組成單元。

    |--Button:按鈕

    |--Label:標籤

    |--Checkbox:檢查框

    |--TextComponent:文本組件

|--TextArea:文本區

|--TextField:文本字段

    |--Container:爲容器,是一個特殊的組件,該組件中可以通過add方法添加其它組件或容器進來。

|--Window:窗口

|--Panel:鑲嵌板

    |--Frame:框架

    |--Dialog:對話

|--FileDialog:文件對話框

 4   佈局管理:

 FlowLayout(流式佈局管理器):從左到右的順序排列。Panel默認的佈局管理器。

 BorderLayout(邊界佈局管理器):東,南,西,北,中。Frame默認的佈局管理器。

 GridLayout(網格佈局管理器):規則的矩陣

 GridBagLayout(網格包佈局管理器):非規則的矩陣

 CardLayout(卡片佈局管理器):選項卡


5   圖形演示

鍵盤事件

package cn.itcast.gui;
import java.awt.*;
import java.awt.event.*;
public class FrameDemo {
	public static void main(String[] args) {
		Frame f = new Frame("鍵盤事件");
		f.setVisible(true);
		int width = Toolkit.getDefaultToolkit().getScreenSize().width;
		int height = Toolkit.getDefaultToolkit().getScreenSize().height;
		f.setBounds((width - 550) / 2, (height - 450) / 2, 550, 450);
		f.setBackground(new Color(204, 232, 207));//CMYK
		f.setLayout(null);
		//添加一個組件,文本框 TextFiled
		TextField tf = new TextField();
		tf.setBounds(100, 100, 100, 30);
		 //void setEchoChar(char c) 
		 tf.setEchoChar('*');
		f.add(tf);
		//爲文本框,添加鍵盤監聽
		tf.addKeyListener(new KeyAdapter() {
			public void keyPressed(KeyEvent e){
				//e.setKeyChar('*');
				//System.out.println("!!!!!!!!");
			/*	char c = e.getKeyChar();
				int x = e.getKeyCode();
				System.out.println(c+"..."+x);*/
				int code = e.getKeyCode();
				/*if(!(code>= KeyEvent.VK_0 && code <= KeyEvent.VK_9)){
					//System.out.println("你按下的是數字");
					e.consume();
				}*/
				//實現ctrl+enter
				if(e.isControlDown() && code==KeyEvent.VK_ENTER){
					System.out.println("按下了組合鍵");
				}
			}
		});
	}
}

鼠標事件

package cn.itcast.gui;
import java.awt.*;
import java.awt.event.*;
public class FrameDemo1 {
	public static void main(String[] args) {
		Frame f = new Frame("鼠標事件");
		f.setVisible(true);
		int width = Toolkit.getDefaultToolkit().getScreenSize().width;
		int height = Toolkit.getDefaultToolkit().getScreenSize().height;
		f.setBounds((width - 550) / 2, (height - 450) / 2, 550, 450);
		f.setBackground(new Color(204, 232, 207));//CMYK
		f.setLayout(null);
		//窗體添加一個按鈕
		Button but = new Button("確定");
		but.setBounds(100, 100, 80, 30);
		f.add(but);
		//按鈕註冊鼠標事件、
		but.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent e){
				if(e.getClickCount()==10)
				System.out.println("點擊了確按鈕");
			}
			public void mouseEntered(MouseEvent e) {
				System.out.println("鼠標移入到組件中");
			}
			public  void mouseExited(MouseEvent e)  {
				System.out.println("鼠標離開組件");
			}
		});
	}
}


對話框

package cn.itcast.gui;
import java.awt.*;
import java.awt.event.*;
public class FrameDemo2 {
	public static void main(String[] args) {
		Frame f = new Frame("對話框");
		f.setVisible(true);
		int width = Toolkit.getDefaultToolkit().getScreenSize().width;
		int height = Toolkit.getDefaultToolkit().getScreenSize().height;
		f.setBounds((width - 550) / 2, (height - 450) / 2, 550, 450);
		f.setBackground(new Color(204, 232, 207));//CMYK
		f.setLayout(null);
		Button but = new Button("確定");
		but.setBounds(100, 100, 80, 30);
		f.add(but);
		
		//對話框組件
		final Dialog d = new Dialog(f,"錯誤提示對話框",true);
		d.setLayout(null);
		d.setBounds(200, 100, 500, 300);
		//添加一個標籤Lable
		Label l = new Label();
		d.add(l);
		l.setText("你選擇的人是不合適的");
		l.setBounds(100, 100, 200, 40);
		l.setFont(new Font("微軟雅黑",Font.BOLD,20));
		//註冊按鈕的點擊事件
		but.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent e){
				d.setVisible(true);
			}
		});
		//對話框的窗體事件
		d.addWindowListener( new WindowAdapter() {
			public void windowClosing(WindowEvent e){
				d.setVisible(false);
			}
		});
	}
}


菜單

package cn.itcast.gui;
/*
 * 菜單
 */
import java.awt.*;
import java.awt.event.*;
public class FrameDemo3 {
	public static void main(String[] args) {
		Frame f = new Frame("菜單演示");
		f.setVisible(true);
		int width = Toolkit.getDefaultToolkit().getScreenSize().width;
		int height = Toolkit.getDefaultToolkit().getScreenSize().height;
		f.setBounds((width - 550) / 2, (height - 450) / 2, 550, 450);
		f.setBackground(new Color(204, 232, 207));//CMYK
		f.setLayout(null);
		//創建Menubar對象
		MenuBar mb = new MenuBar();
	    f.setMenuBar(mb);
	    
	    Menu file = new Menu("文件");
	    Menu edit = new Menu("編輯");
	    
	    mb.add(file);
	    mb.add(edit);
	    
	    //建立MenuItem
	    MenuItem open = new MenuItem("打開");
	    MenuItem save = new MenuItem("保存");
	    
	    file.add(open);
	    file.add(save);
	    //子菜單,對編輯菜單進行設置,添加子菜單,刪除--》刪除選定
	    Menu delete = new Menu("刪除");
	    //是將Menu對象,添加到另一個Menu對象
	    edit.add(delete);
	    //建立刪除選定
	    MenuItem deleteOk = new MenuItem("刪除選定");
	    delete.add(deleteOk);
	    delete.add(new MenuItem("刪除選定的行"));
	}
}
/*  open.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
	System.out.println("打開菜單");
}
});*/


事件列表

package cn.itcast.guifilelist;

public class FileListTest {
   public static void main(String[] args) {
	 new FileList();
   }
}

package cn.itcast.guifilelist;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
public class FileList {
	public FileList(){
		init();
	}
	//定義窗體
	private Frame frm ;
	//定義用戶輸入的文本框
	private TextField tf ;
	//定義按鈕
	private Button but ;
	//定義展示文件列表的多行文本
	private TextArea ta ;
	//定義對話框
	private Dialog da ;
	//對話框上的文本標籤label 確定按鈕
	private Label lbl;
	private Button butDa ;
	//定義獲取屏幕分辯率的方法
	private static final int width = Toolkit.getDefaultToolkit().getScreenSize().width;
	private static final int height = Toolkit.getDefaultToolkit().getScreenSize().height;
	
	private void init(){
		frm = new Frame("文件列表顯示");
		frm.setBounds((width-500)/2, (height-550)/2, 500, 550);
		frm.setBackground(new Color(204, 232, 207));
		frm.setLayout(null);
		frm.setVisible(true);
		//窗體的初始化定義完畢
		
		//用戶輸入文本框初始化定義
		tf = new TextField();
		tf.setBounds(50, 60, 300, 22);
		frm.add(tf);
		
		//用戶的確定按鈕
		but = new Button("確定");
		but.setBounds(380, 60, 50, 22);
		frm.add(but);
		
		//顯示文件列表的區域
		ta = new TextArea();
		ta.setBounds(50, 100, 380, 420);
		frm.add(ta);
		
		//對話框初始化
		da = new Dialog(frm,"錯誤的提示",true);
		da.setBounds((width-400)/2, (height-100)/2, 400, 100);
		butDa = new Button("確定");
		myEvent();
		
	}
	//定義方法,處理事件
	private void myEvent(){
		//對窗體添加窗體事件
		frm.addWindowListener( new WindowAdapter() {
			public void windowClosing(WindowEvent e){System.exit(0);}
		});
		
		//對確定按鈕,進行事件的添加
		but.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent e){
				//調用一個方法,專門處理文件的顯示
				fileList();
			}
		});
		//對話框的關閉效果
		da.addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent e){da.setVisible(false);}
		});
		
		//對話框按鈕添加鼠標事件,關閉對話框
		butDa.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent e){ da.setVisible(false);}
		});
		
		//對文本框添加鍵事件
		tf.addKeyListener(new KeyAdapter() {
			public void keyPressed(KeyEvent e){
				int code = e.getKeyCode();
				if(code==KeyEvent.VK_ENTER)
					fileList();
			}
		});
	}
	//處理鼠標點擊後的文件顯示
	private void fileList(){
		String path = tf.getText();
		if("".equals(path)||path==null)
			return;
		//將輸入的文本內容,封裝成File對象
		File f = new File(path);
		if(!f.exists()){
			//對話框出現了
			da.setLayout(null);
			lbl = new Label();
			lbl.setText("您輸入的"+path+"不存在");
			lbl.setBounds(70, 40, 200, 30);
			da.add(lbl);
			butDa.setBounds(120, 72, 50, 25);
			da.add(butDa);
			da.setVisible(true);
		}else{
			ta.setText("");
			String line = null;
			String os = System.getProperty("os.name");
			if(os.substring(0, 7).equals("Windows"))
				line = "\r\n";
			else
				line = "\r";
			String[] str = f.list();
			//System.out.println(str);
			for(String s : str){
//				ta.setText(s);
				
				ta.append(s+line);
			}
		}
	}
}

模仿記事本

package cn.itcast.notepad;

public class NotepadTest {
	public static void main(String[] args) {
		new Notepad();
	}
}

package cn.itcast.notepad;

import java.awt.*;
import java.awt.event.*;
import java.io.*;

public class Notepad {
	public Notepad() {
		init();
	}

	// 定義窗體容器
	private Frame frm;
	//定義菜單酒吧
	private MenuBar mb;
	//定義文件菜單
	private Menu file;
	//定義子菜單,保存,打開
	private MenuItem save,open;
	//定義多行文本地域
	private TextArea ta ;
	//文件對話框
	private FileDialog fd ;
	
	private String path;
	private String fileName;

	// 定義獲取屏幕分辯率的方法
	private static final int width = Toolkit.getDefaultToolkit()
			.getScreenSize().width;
	private static final int height = Toolkit.getDefaultToolkit()
			.getScreenSize().height;

	private void init() {
		frm = new Frame("模仿記事本");
		frm.setBounds((width - 800) / 2, (height - 600) / 2, 800, 600);
		frm.setBackground(new Color(204, 232, 207));
		frm.setLayout(null);
		frm.setVisible(true);
		//初始化菜單
		mb = new MenuBar();
		frm.setMenuBar(mb);
	    file  = new Menu("文件");
	    save = new MenuItem("保存");
	    open = new MenuItem("打開");
	    
	    mb.add(file);
	    file.add(open);
	    file.add(save);
	    //初始化文本區域
	    ta = new TextArea();
	    ta.setBounds(30, 60, 730, 500);
	    frm.add(ta);
	    myEvent();
	    
	}

	private void myEvent() {
		//窗體事件
		frm.addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent e){
				System.exit(0);
			}
		});
		
		
		//打開菜單添加事件監聽,活動事件
		open.addActionListener(new ActionListener() {	
			public void actionPerformed(ActionEvent e) {
				//打開 windows資源管理器對話框,FileDialog
				fd = new FileDialog(frm,"打開文件",FileDialog.LOAD);
				fd.setVisible(true);
				//如何知道用戶選擇什麼文件,或者是什麼也沒有選呢
				 path = fd.getDirectory();//獲取目錄,點擊取消 返回null
				 fileName = fd.getFile();//獲取文件名
				//進行健壯性判斷
				if(path == null || fileName == null)
					return ;
				//用戶確實選擇了文件,IO技術讀取文件
				readFile(path, fileName);
			}
		});
		
		//保存菜單添加事件監聽
		save.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				if(path==null || fileName==null ){
			   fd = new FileDialog(frm,"保存文件",FileDialog.SAVE);
			   fd.setVisible(true);
				
			    path = fd.getDirectory();
			    fileName = fd.getFile();
				}
			   if(path == null || fileName == null)
				   return;
			   writeFile(path, fileName);
			}
		});
		
	}
	//保存文件的方法,保存用戶指定的文件
	private void writeFile(String path,String fileName){
		//將路徑和文件名封裝成File對象
		File f = new File(path,fileName);
		FileWriter fw = null;
		try{
			fw = new FileWriter(f);
			fw.write(ta.getText());
			fw.flush();
		}catch(IOException e){
			e.printStackTrace();
			throw new RuntimeException("保存失敗");
		}finally{
			try{
				if(fw!=null)
					fw.close();
			}catch(IOException e){
				
			}
		}
	}
	
	
	
	
	
    //讀取用戶選擇的文件,並將文件顯示在文本區域內
	private void readFile(String path,String fileName){
		//將文件和目錄封裝成File對象
		File f = new File(path,fileName);
		//IO技術封裝文件,並讀取文件,追加到文本區域
		BufferedReader bfr = null;
		try{
			bfr = new BufferedReader(new FileReader(f));
			String line = null;
			ta.setText("");
			while((line = bfr.readLine())!= null){
				ta.append(line+"\r\n");
			}
		}catch(IOException e){
			e.printStackTrace();
			throw new RuntimeException("文件讀取失敗");
		}finally{
			try{
				if(bfr!=null)
					bfr.close();
			}catch(IOException e){
				throw new RuntimeException("文件關閉失敗");
			}
		}
		
	}
	
	
	
}



                 ------ android培訓java培訓java學習型技術博客、期待與您交流! ---------- 

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