第58節:Java中的圖形界面編程-GUI

標題圖

歡迎到個人簡書查看個人文集java

前言:

GUI是圖形用戶界面,在Java中,圖形用戶界面咱們用GUI表示,而GUI的完整英文爲: Graphical User Interface(圖形用戶接口), 所謂圖形用戶界面就是以圖形的方式來顯示你計算機的操做界面, 咱們計算機中操做的界面就是 咱們Java中常說的圖形用戶界面, 這樣的操做簡單明瞭.程序員

CLI的英文爲Command Line User Interface, 是命令行用戶接口, 命令行, 這就是咱們程序員經常熟悉的, 常見的Dos命令行操做, 這些經常使用命令式須要記住的, CLI的操做就不那麼直觀了.app

JavaGUI提供了對象在 java.awtjavax.swing 兩個包中ide

在早年中, Java.awt爲抽象窗口工具包, 英文爲 Abstract Window ToolKit, 須要調用本地的系統方法來實現功能需求,屬於重量級的控件.工具

而在awt的基礎上,建立了一套圖形界面系統, 從而提供了更多的組件, 並且徹底是由Java實現的, 加強了移植性, 屬於輕量級的控件. 有本身的顯示效果, 顯示本身的形狀, 平臺要求低了, 輕量級和體統嵌入的比較淺.佈局

繼承關係spa

Component .png

Button按鈕,Label標籤,Checkbox複選框,TextComponent文本組件,TextArea文本區域,TextField文本框.命令行

組件裏面還能放入組件,在Java中咱們叫容器. window 窗體, Panel 面板 Frame小窗口,Dialog對話框,FileDialog文件對話框3d

GUI 佈局code

Flow 流式佈局

上左下右

掃雷的格式佈局

佈局管理

常見的佈局管理器:

流式佈局管理: FlowLayout, 是從左到右的排列, 是Panel默認的佈局管理.

邊界佈局: 東南西北,中, 是Frame默認的佈局管理

網格佈局管理: GridLayout

卡片佈局管理: CardLayout

網格包佈局管理: GridBagLayout

GUI 簡單的小窗體

java.awt 包含用於建立用戶界面和繪製圖形圖像的全部類.

java.awtComponent

java.lang.Object -> java.awt.Component

全部已實現的接口:

ImageObserver, MenuContainer, Serializable

component 是一個具備圖形表示能力的對象.

component

子類

window

java.awtFrame

java.lang.Object -> java.awt.Component -> java.awt Container -> java.awt.Window -> java.awt.Frame

實現的接口:

ImageObserver, MenuContainer, Serializable, Accessible

直接已知的子類:

JFrame

Frame是帶有標題和邊框的頂層窗口.

frame

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;
import java.awt.event.WindowListener;

public class FrameDemo {

	public static void main(String[] args) {

		//1,建立一個窗體。Frame
		Frame f = new Frame("my frame");
		//2, 對窗體進行基本設置。
		f.setSize(500, 400);
		f.setLocation(400, 200);
		//設置佈局。
		f.setLayout(new FlowLayout());
		
		//給窗體添加組件。
		 Button but = new Button("my button");
		 
		 //加入一個文本框組件。
		 TextField tf = new TextField(40);
		
		 //將組件添加到窗體中。
		 f.add(tf);
		 f.add(but);
		 
		 //1,在按鈕上添加所需的監聽器。
		 but.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				System.out.println("按鈕被觸發了....."+e);
				System.exit(0);

			}
		});
		 
		 f.addWindowListener(new WindowAdapter() {
	
			@Override
			public void windowClosing(WindowEvent e) {
				System.out.println("window closing");
				System.exit(0);
			}

			@Override
			public void windowOpened(WindowEvent e) {
				
				System.out.println("孔雀開屏!window open");
			}
		
		});
		 
		but.addMouseListener(new MouseAdapter() {

			@Override
			public void mouseClicked(MouseEvent e) {
				if(e.getClickCount() == 2){
					
					System.out.println("mouse double click");
				}
			}
			
		});
		 
		 
		tf.addKeyListener(new KeyAdapter() {

			@Override
			public void keyPressed(KeyEvent e) {
				
				//1,如何獲取錄入的內容。經過鍵盤事件對象獲取。
//				char key = e.getKeyChar();
//				int code = e.getKeyCode();
//				System.out.println(code+"...."+KeyEvent.getKeyText(code));
				
//				int code = e.getKeyCode();
//				if(!(code>=KeyEvent.VK_0 && code<=KeyEvent.VK_9)){
//					System.out.println("必須是0-9數字");
//					e.consume();//直接取消默認處理方式。
//				}
				
				
				if(e.isControlDown() && e.getKeyCode()==KeyEvent.VK_ENTER){
					System.out.println("ctrl+enter run");
					
				}
				
			}
			
		});
		 
		
		//3,讓窗體顯示。
		f.setVisible(true);
		
		System.out.println("over");
	}

}

事件監聽機制

  1. 事件源-組件
  2. 事件 - Event
  3. 監聽器 - Listener
  4. 事件處理

Button

java.awt classButton

java.lang.Object -> java.awt.Component -> java.awt.Button

button

監聽事件:

addActionListener(ActionListener l) 添加指定的動做偵聽器以今後按鈕接收動做事件。

窗口適配器

MouseListener

mouseListener

public interface MouseListener extends EventListener

用於在組件上接收「有趣」鼠標事件(按,釋放,單擊,輸入和退出)的偵聽器界面。

方法

方法的詳細信息:

mouseClicked void mouseClicked(MouseEvent e) 在組件上單擊鼠標按鈕時調用

mousePressed void mousePressed(MouseEvent e) 在組件上按下鼠標時調用

mouseReleased void mouseReleased(MouseEvent e) 在組件上釋放鼠標時調用

mouseEntered void mouseEntered(MouseEvent e) 當鼠標進入組件時調用

mouseExited void mouseExited(MouseEvent e) 當鼠標退出組件時調用

方法摘要

文本名稱

圖形化界面的工具

選擇

選擇2

選擇3

選擇4

選擇5

//1,獲取路徑。經過文本框對象完成。
		String str_dir = jTextField1.getText();
		
		//2,將字符串路徑封裝成File對象。
		File dir = new File(str_dir);
		//判斷。
		if(dir.exists()&&dir.isDirectory()){
			
			
			//清空文本區域。
			jTextArea1.setText("");
			//3,獲取文件名稱列表。
			String[] names = dir.list();
			for(String name :names){
			//4,將名字顯示到文本區域。
			jTextArea1.append(name+LINE_SEPARATOR);
			}
			
		}

JFileChooser

public class JFileChooser extends JComponent implements Accessible

注意

事件監聽機制流程:

  1. 監聽器 - 將監聽器註冊到事件源
  2. 事件源 - 組件 (外部動做)
  3. 產生事件對象 - 將事件對象傳給事件處理方式

菜單繼承

繼承

MenuComponent MenuBar,MenuItem,Menu

達叔小生:日後餘生,惟獨有你 You and me, we are family ! 90後帥氣小夥,良好的開發習慣;獨立思考的能力;主動而且善於溝通 簡書博客: 達叔小生 https://www.jianshu.com/u/c785ece603d1

結語

  • 下面我將繼續對 其餘知識 深刻講解 ,有興趣能夠繼續關注
  • 小禮物走一走 or 點贊
相關文章
相關標籤/搜索