1. 程式人生 > >java之 22天 GUI 圖形介面程式設計(一)

java之 22天 GUI 圖形介面程式設計(一)

GUI(圖形使用者介面)


import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

/**
 * GUI(圖形使用者介面)
 *  Graphical User Interface(圖形使用者介面)
 *  用圖形的方式,來顯示計算機操作的介面,這樣更方便更直觀.
 * 
 * CLI
 *  Command Line User Interface(命令列使用者介面)
 *  就是常用的Dos命令列操作.
 *  需要記憶一些常用的命令.操作更直觀.
 * 
 * 舉例:
 *   比如:建立資料夾,或者刪除資料夾等 
 *   md haha   del haha  
 *   
 *   
 * Java的GUI提供的物件都存在 java.Awt 和 javax.Swing 兩個包中.
 * 
 * java.Awt:Abstract Window ToolKit(抽象 視窗工具包)
 * 	  需要呼叫本地系統方法實現功能.屬重量級控制元件 (跨平臺不夠強)
 *  
 * java.Swing:在AWT的基礎上,建立的一套圖形介面系統,器重提供了更多的元件,
 *   而且完全由java實現,增強了移植性,屬於輕量級控制元件.(跨平臺很好)
 *   
 * java.swt: IBM 公司開發 Eclipse 用的元件工具 可以Eclipse網站下載後就可以使用了.
 * 
 * 
 * 佈局管理器
 * 1)容器中的元件的排放方式,就是佈局.
 * 2)常見的佈局管理器
 *   FlowLayout(流式佈局管理器)
 *     從左到右的順序排列
 *     Panel預設的佈局管理器
 *   BorderLayout(辯解佈局管理器)
 *     東  南  西  北   中
 *     Frame 預設的佈局管理器
 *     不指定佈局方式,預設 滿屏覆蓋,在新增一個 也是 滿屏覆蓋
 *   GridLayout (網格佈局管理器)
 *     規則的矩陣
 *   CardLayout  (卡片佈局管理器)
 *     選項卡
 *   GridBagLayout(網格包佈局管理器)
 *    非規則的矩陣
 *    
 * 事件監聽機制組成
 *  事件源:  
 *  事件:Event
 *  監聽器:Listener
 *  時間處理:(引發事件後處理方式)
 *  
 *  事件源:就是awt包或者swing包中的那些影象介面元件.
 *  事件:每個事件源都有自己特定的對應時間和共性時間.
 *  監聽器:可以出發某一個事件的動作都已經封裝到監聽器中.
 */


public class GuiDemo {
	public static void main(String[] args) {
		Frame f=new Frame("my awt");
		f.setSize(500,400);
		f.setLocation(300,200);
		f.setLayout(new FlowLayout());
		
		Button b=new Button("我是一個按鈕");
		
		f.add(b);
		
		f.addWindowListener(new MyWin());
		
		f.setVisible(true);
		System.out.println("Hello world!");
	}

}

//因為介面WindowLinstener中的所有方法都被子類 WindowAdapter實現了,.
//並且覆蓋了其中的所有方法,那麼我們只能繼承 WindowAdapter 覆蓋我們的方法即可
class MyWin extends WindowAdapter{
	
	@Override
	public void windowClosing(WindowEvent e) {
		// TODO Auto-generated method stub
		//System.out.println("Window closing"+e.toString());
		System.out.println("我關了");
		System.exit(0);
	}
	@Override
	public void windowActivated(WindowEvent e) {
		//每次獲得焦點 就會觸發
		System.out.println("我活了");  
		//super.windowActivated(e);
	}
	@Override
	public void windowOpened(WindowEvent e) {
		// TODO Auto-generated method stub
		System.out.println("我開了");
		//super.windowOpened(e);
	}
	
}



簡單Frame


import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class FrameDemo {

	//定義該影象中所需要的元件的引用
	private Frame f;
	private Button but;
	
	FrameDemo(){
		init();
		
	}
	
	public void init(){
		
		f=new Frame("my freame");
		f.setBounds(300,100,600,500);
		f.setLayout(new FlowLayout());  //採用流式佈局
		
		but=new  Button("my button");
		//將元件新增到 frame中
		f.add(but);
		
		//載入一下窗體上的事件.
		myEvent();
		//顯示窗體
		f.setVisible(true);
	}
	private void myEvent(){
		f.addWindowListener(new WindowAdapter(){
			@Override
			public void windowClosing(WindowEvent e) {
				// TODO Auto-generated method stub
				//super.windowClosing(e);
				System.exit(0);
			}
		});
		
		//讓按鈕具備退出程式的功能
		/*
		 * 按鈕就是事件源
		 * 那麼選擇那個監聽器呢?
		 * 通過關閉窗體例項瞭解到,下個要知道那個元件具備什麼樣的特有監聽器,
		 * 需要檢視該元件物件的功能.
		 */
		//新增一個活動監聽
		but.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				System.out.println("退出, 按鈕乾的");
				System.exit(0);
			}
		});
		
	}
	
	public static void main(String[] args) {
		FrameDemo f=new FrameDemo();
	}

}


鍵盤和滑鼠事件


import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class MouseAndKeyEvent {

	private Frame f;
	private Button but;
	private TextField tf;
	
	public MouseAndKeyEvent() {
		init();
	}

	private void init(){
		f=new Frame("me frame");
		f.setBounds(300, 200, 600, 500);
		f.setLayout(new FlowLayout());
		
		tf=new TextField(20);
		but=new Button("my Botton");
		
		f.add(tf);
		f.add(but);
		
		event();
		
		f.setVisible(true);
	}

	private void event(){
		f.addWindowListener(new WindowAdapter() {
			@Override
			public void windowClosing(WindowEvent e) {
				// TODO Auto-generated method stub
				System.exit(0);
			}
		
		});
		tf.addKeyListener(new KeyAdapter() {
			public void keyPressed(KeyEvent e){
				int code=e.getKeyCode();
				if(!(code>=KeyEvent.VK_0 && code<=KeyEvent.VK_9)){
					System.out.println(code+"....非法的輸入");
					e.consume();  //不執行加入文字框.
				}
				
			}
			
		});
		
		
		
		but.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				System.out.println("actionPerformed 活動一次");
			}
		});
		
		but.addMouseListener(new MouseAdapter() {
			private int count=0;
			private int clickCount=1;
			public void mouseEntered(MouseEvent e){
				System.out.println("滑鼠進入到改元件"+count++);
			}
			
			public void mouseClicked(MouseEvent e){
				if(e.getClickCount()==2){
					System.out.println("雙擊動作");
				}else
					System.out.println("點選動作"+clickCount++);
				
			}
			
		});
		//新增 鍵盤事件
		but.addKeyListener(new KeyAdapter() {
		
			public void keyPressed(KeyEvent e){
				System.out.println(e.getKeyChar()+"..."+e.getKeyCode());
				System.out.println(KeyEvent.getKeyText(e.getKeyCode())+"..."+e.getKeyCode());
				//enter  就退出
				/*if(e.getKeyCode()==KeyEvent.VK_ENTER)
					System.
					exit(0);*/
				
				//ctrl + Enter 傳送訊息
				if(e.isControlDown() && e.getKeyCode()==KeyEvent.VK_ENTER){
					System.out.println("我要傳送訊息!");
				}
				
			}
		
		});
	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		new MouseAndKeyEvent();
	}

}

相關推薦

java 22 GUI 圖形介面程式設計()

GUI(圖形使用者介面) import java.awt.Button; import java.awt.FlowLayout; import java.awt.Frame; import java.awt.event.WindowAdapter; import java

Java基礎總結GUI圖形介面程式設計

GUI和CLI: GUI:(Graphical User Interface)圖形使用者介面:用圖形的方式顯示計算機的操作介面。 CLI:(Command Line User Interface)命令列使用者介面:常見的Dos命令列操作。 awt和swing: awt:(Abstra

java gui圖形介面程式設計

轉載學習轉自:https://blog.csdn.net/u012891055/article/details/50095365看了下網上的gui教程都沒有什麼比較好的,不管是java、安卓還是ios,設計UI都應該先從佈局上來考慮,而不是看一點寫一點。如果你一來就想著用絕對

java gui圖形介面程式設計(幾乎包含所有常用的控制元件及佈局)

看了下網上的gui教程都沒有什麼比較好的,不管是java、安卓還是ios,設計UI都應該先從佈局上來考慮,而不是看一點寫一點。如果你一來就想著用絕對佈局,我只能說這種思想很危險,磚慢慢搬吧。 這個是中期考試的時候邊學邊做的一個東西,做一個eclipse的搜尋gui,類似下圖

**JAVA** GUI圖形介面程式設計-swing的使用

>中間容器的巢狀使用  中間容器的使用  對窗體、窗格、面板的理解。  窗體Frame是包括放大、關閉按鈕的整個視覺化介面  窗格Pane是一種對面的分割工具,能夠將潔面按照不同的要求分割成各種形狀  面板Panel是一種用來儲存空間的空間,向下放入控制元件,向上新增

Java圖形介面程式設計()

初步認識swing  awt   AWT(abstract Window Toolkit)是java釋出的第一個圖形介面庫。AWT通過呼叫系統本地的庫,來建立和顯示控制元件。 AWT 的元件都是使用

Java----AWT元件開發和Swing介面程式設計()

一、AWT元件開發 1、AWT入門        AWT是抽象視窗工具箱的縮寫,它為編寫圖形使用者介面提供了使用者介面,通過這個介面就可以繼承很多方法,省去了很多工作。AWT還能使應用程式更好地同用戶進行互動。        AWT中的容器是一種特殊

第58節:Java中的圖形介面程式設計-GUI

歡迎到我的簡書檢視我的文集 前言: GUI是圖形使用者介面,在Java中,圖形使用者介面我們用GUI表示,而GUI的完整英文為: Graphical User Interface(圖形使用者介面), 所謂圖形使用者介面就是以圖形的方式來顯示你計算機的操作介面, 我們計算機中操作的介面就是 我

java圖形介面程式設計換面板

前言 總所周知,java圖形介面效果不是特別理想,於是在網上找了一些非常好看的面板 面板地址:面板地址 使用 下載了一款名為weblaf的面板,使用也很簡單,匯入jar包後,在main方法中,JFrame定義之前呼叫install();方法即可。 public

Java內容梳理(21)API學習(9)GUI圖形介面

1、GUI介紹 GUI程式設計:使用者圖形介面,軟體介面程式設計 Java中的GUI程式設計技術:AWT;Swing(AWT的擴充套件);SWT;JavaFx 2、Swing程式設計 元件: 組成軟體介面的零件;包括容器,控制元件,主題 控制元件: 與使用者發

Matlab學習筆記 (GUI使用者圖形介面程式設計

1. 查詢同一型別的所有控制元件: findobj(gcf, 'type','axes') %查詢所有座標軸,gcf表示當前圖形介面 2. 不顯示座標軸: set(handles.axes1,'xTick',[]); set(handles.axes1,'ytick',[

黑馬程式設計師 java基礎24 GUI程式設計學習總結

---------------------- ASP.Net+Unity開發、.Net培訓、期待與您交流! --------------------- 一.圖形使用者介面 GUI:Graphical  User Interface(圖形使用者介面) CLI:Comman

JavaSwing圖形介面程式設計訊息提示框(二)

package three.day.frame; import java.awt.BorderLayout; import java.awt.Container; import java.awt.GridLayout; import java.awt.event

JavaSwing圖形介面程式設計畫圖程式

package three.day.frame; import java.awt.*; import java.awt.event.*; import java.awt.geom.*; import java.io.*; import java.util.*; impo

Python3圖形介面程式設計

#匯入模組 import tkinter #建立一個對話方塊 import tkinter.simpledialog as dl #建立一個資訊展示框 import tkinter.messagebox as mb import random #建立控制元件 top = tkinter.Tk

java22----編碼問題,網路通訊,TCP,

文章目錄編碼問題解決亂碼網路通訊七層協議獲取主機UDPTCP 昨天知識總結 1.轉換流 2.多個輸入源輸出源的組合 3.更換輸入源輸出源 4.列印流 位元組列印流 字元列印流 5.序列流,資料流,記憶體流 6.Properties 7.序列化流 編碼問

如何在CentOS7下安裝GUI圖形介面

1、如何在CentOS7下安裝GUI圖形介面       當你安裝CentOS7伺服器版本的時候,系統預設是不會安裝GUI的圖形介面程式,這個需要手動安裝CentOS7 Gnome GUI包。 2、在系統下使用命令安裝gnome圖形介面程式       在安裝Gnome

Java抽象(abstract)類、介面(interface)的用法總結

導讀: 1、什麼是抽象類(abstract)? 2、如何定義抽象類(abstract)? 3、抽象類(abstract)的作用? 4、何為介面?介面和類的區別? 5、怎麼區分抽象類和介面? 1、抽象類的定義:         Java中宣告一個類時,可以不給出該類的所有

圖形介面程式設計(六) 分組容器和卡片容器(1)

——本節介紹瞭如何使用分組容器(GroupBox)以及一個分組RadioButton的例項 1 分組容器 GroupBox容器使用起來就和一個基本的Panel容器一樣,它不具備佈局管理功能,僅僅是一個可以容納其它控制元件的容器。 Grou

Python 基於Tkinter的GUI圖形介面學習

用Tkinter畫圖首先要建立一個根掛件,可以用Tk()產生 然後要產生不同型別的小掛件,有標籤Label,按鈕Button,介面Entry 之類的,具體的檢視網上的詳細文件。 比如說用widget = Label(None, text = 'hello')產生了一個