最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JAVA基礎(chǔ)-GUI

 更新時間:2020年06月09日 10:09:37   作者:cj5785  
這篇文章主要介紹了JAVA中關(guān)于GUI的相關(guān)知識,文中代碼非常詳細(xì),供大家參考和學(xué)習(xí),感興趣的朋友可以了解下

Java也提供圖像化編程

圖形化

GUI(圖形用戶界面)

GUI

1  Graphical User Interface(圖形用戶接口)

2  用圖形的方式,來顯示計算機(jī)操作的界面,這樣更方便更直觀

CLI

1  Command line User Interface (命令行用戶接口)

2  就是常見的Dos命令行操作

3  需要記憶一些常用的命令,操作不直觀

Java為GUI提供的對象都存在java.Awt和javax.Swing兩個包中

Awt和Swing

java.Awt:Abstract Window ToolKit(抽象窗口 工具包),需要調(diào)用本地系統(tǒng)方法實現(xiàn)功能。屬重量級控件

javax.Swing:在AWT的基礎(chǔ)上,建立的一套圖形界面系統(tǒng),其中提供了更多的組件,而且完全由Java實現(xiàn)。增強(qiáng)了移植性,屬

輕量級控件

繼承關(guān)系圖

Container:為容器,是一個特殊的組件,該組件中可以通過add方法添加其他組件進(jìn)來

布局管理器

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

常見的布局管理器:

FlowLayout(流式布局管理器)
從左到右的順序排列
Panel默認(rèn)的布局管理器

BorderLayout(邊界布局管理器)
東,南,西,北,中
Frame默認(rèn)的布局管理器

GridLayout(網(wǎng)格布局管理器)
規(guī)則的矩陣

CardLayout(卡片布局管理器)
選項卡

GridBagLayout(網(wǎng)格包布局管理器)
非規(guī)則的矩陣

建立一個簡單的窗體

Container常用子類:Window Panel(面板,不能單獨存在)

Window常用子類:Frame Dialog

簡單的窗體創(chuàng)建過程:

Frame f = new Frame("my window");
f.setLayout(new FlowLayout());
f.setSize(500,400);//設(shè)置窗體大小
f.setLocation(300,200);//設(shè)置窗體出現(xiàn)在屏幕的位置
f.setVisible(true); //設(shè)置窗口可見性

事件監(jiān)聽

事件監(jiān)聽機(jī)制組成

事件源(組件):就是awt包或者swing包中的那些圖形界面組件

事件(Event):每一個事件源都有自己特有的對應(yīng)事件和共性事件

監(jiān)聽器(Listener):將可以觸發(fā)某一個事件的動作(不只一個動作)都已經(jīng)封裝到了監(jiān)聽器中

事件處理(引發(fā)事件后處理方式)

事件監(jiān)聽機(jī)制流程圖

事件監(jiān)聽機(jī)制

1  確定事件源(容器或組件)

2  通過事件源對象的addXXXListener()方法將偵聽器注冊到該事件源上

3  該方法中接收XXXListener的子類對象,或者XXXListener的子類XXXAdapter的子類對象

4  一般用匿名內(nèi)部類來表示

5  在覆蓋方法的時候,方法的參數(shù)一般是XXXEvent類型的變量接收

6  事件觸發(fā)后會把事件打包成對象傳遞給該變量(其中包括事件源對象。通過getSource()或者getComponent()獲?。?/p>

import java.awt.*;
import java.awt.event.*;
import java.io.*;
class Test {
	private Frame f;
	private TextField tf;
	private Button but;
	private TextArea ta;

	private Dialog d;
	private Label lab;
	private Button okBut;

	Test() {
		init();
	}

	public void init() {
		f = new Frame("my window");
		f.setBounds(300,100,600,500);
		f.setLayout(new FlowLayout());
		tf = new TextField(60);
		but = new Button("轉(zhuǎn)到");
		ta = new TextArea(25,70);
		d = new Dialog(f,"提示信息-self",true);
		d.setBounds(400,200,240,150);
		d.setLayout(new FlowLayout());
		lab = new Label();
		okBut = new Button("確定");
		d.add(lab);
		d.add(okBut);
		f.add(tf);
		f.add(but);
		f.add(ta);
		myEvent();
		f.setVisible(true);
	}

	private void myEvent() {
		okBut.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				d.setVisible(false);
			}
		});
		d.addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent e) {
				d.setVisible(false);
			}
		});
		tf.addKeyListener(new KeyAdapter() {
			public void keyPressed(KeyEvent e) {
				if(e.getKeyCode()==KeyEvent.VK_ENTER)
					showDir();
			}
		});
		but.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				showDir();
			}
		});
		f.addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent e) {
				System.exit(0);	
			}
		});
	}
	private void showDir() {
		String dirPath = tf.getText();		
		File dir = new File(dirPath);
		if(dir.exists() && dir.isDirectory()) {
			ta.setText("");
			String[] names = dir.list();
			for(String name : names) {
				ta.append(name+"\r\n");
			}
		} else {
			String info = "輸入信息錯誤,請重輸";
			lab.setText(info);
			d.setVisible(true);
		}
	}
	public static void main(String[] args) {
		new Test();
	}
}

菜單

概述

MenuBar,Menu,MenuItem
先創(chuàng)建菜單條,再創(chuàng)建菜單,每一個菜單 中建立菜單項
也可以菜單添加到菜單中,作為子菜單
通過setMenuBar()方法,將菜單添加到Frame中

菜單繼承體系

代碼示例

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

class Test {

	private Frame f;
	private MenuBar mb;
	private Menu m,subMenu;
	private MenuItem closeItem,subItem;

	Test(){
		init();
	}
	
  public void init(){
		f = new Frame("my window");
		f.setBounds(300,100,500,600);
		f.setLayout(new FlowLayout());
		mb = new MenuBar();
		m = new Menu("文件");
		subMenu = new Menu("子菜單");
		subItem = new MenuItem("子條目");
		closeItem = new MenuItem("退出");
		subMenu.add(subItem);
		m.add(subMenu);
		m.add(closeItem);
		mb.add(m);
		f.setMenuBar(mb);
		myEvent();
		f.setVisible(true);
	}
	private void myEvent() {
		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 static void main(String[] args) {
		new Test();
	}
}

可執(zhí)行Jar包

1  將多個類封裝到了一個包(package)中。

2  定義一個jar包的配置信息。

3  定義一個文件a.txt,文件內(nèi)容內(nèi)容為:Main-Class:(空格)包名.類名(回車)

4  打jar包。
jar -cvfm my.jar a.txt 包名

5  通過winrar程序進(jìn)行驗證,查看該jar的配置文件中是否有自定義的配置信息

6  通過工具–文件夾選項–文件類型–jar類型文件,通過高級,定義該jar類型文件的打開動作的關(guān)聯(lián)程序
jdk\bin\javaw.exe -jar

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

public class Test {
	private Frame f;
	private MenuBar bar;
	private TextArea ta;
	private Menu fileMenu;
	private MenuItem openItem,saveItem,closeItem;
	private FileDialog openDia,saveDia;
	private File file;
	Test() {
		init();
	}
	public void init() {
		f = new Frame("my window");
		f.setBounds(300,100,650,600);
		bar = new MenuBar();
		ta = new TextArea();
		fileMenu = new Menu("文件");
		openItem = new MenuItem("打開");
		saveItem = new MenuItem("保存");
		closeItem = new MenuItem("退出");
		fileMenu.add(openItem);
		fileMenu.add(saveItem);
		fileMenu.add(closeItem);
		bar.add(fileMenu);
		f.setMenuBar(bar);
		openDia = new FileDialog(f,"我要打開",FileDialog.LOAD);
		saveDia = new FileDialog(f,"我要保存",FileDialog.SAVE);
		f.add(ta);
		myEvent();
		f.setVisible(true);
	}
	private void myEvent() {
		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.flush();
					bufw.close();
				} catch (IOException ex) {
					throw new RuntimeException();
				}
			}
		});
		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 ;
				ta.setText("");
				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 (IOException ex) {
					throw new RuntimeException("讀取失敗");
				}
			}
		});
		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 static void main(String[] args) {
		new Test();
	}
}

以上就是JAVA基礎(chǔ)-GUI的詳細(xì)內(nèi)容,更多關(guān)于JAVA GUI的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Java生成中間logo的二維碼的示例代碼

    Java生成中間logo的二維碼的示例代碼

    這篇文章主要介紹了Java如何生成中間logo的二維碼,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07
  • 關(guān)于過濾器Filter的介紹和使用詳解

    關(guān)于過濾器Filter的介紹和使用詳解

    這篇文章主要介紹了關(guān)于過濾器Filter的使用,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-03-03
  • java中SpringBoot?自動裝配的原理分析

    java中SpringBoot?自動裝配的原理分析

    這篇文章主要介紹了SpringBoot?自動裝配的原理分析的相關(guān)資料,需要的朋友可以參考下
    2022-12-12
  • Mybatis Plus條件構(gòu)造器ConditionConstructor用法實例解析

    Mybatis Plus條件構(gòu)造器ConditionConstructor用法實例解析

    這篇文章主要介紹了Mybatis Plus條件構(gòu)造器ConditionConstructor用法實例解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-08-08
  • 詳解Java基礎(chǔ)篇--面向?qū)ο?(構(gòu)造方法,static、this關(guān)鍵字)

    詳解Java基礎(chǔ)篇--面向?qū)ο?(構(gòu)造方法,static、this關(guān)鍵字)

    這篇文章主要介紹了Java基礎(chǔ)篇--面向?qū)ο?(構(gòu)造方法,static、this關(guān)鍵字),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • 解析Java多線程之常見鎖策略與CAS中的ABA問題

    解析Java多線程之常見鎖策略與CAS中的ABA問題

    本篇文章介紹了常見的鎖策略,并說明了synchronized關(guān)鍵字加的鎖類型不是單一一種鎖類型的,根據(jù)可重入鎖與非可重入鎖引出了死鎖的概念與死鎖條件,最后介紹了CAS指令以及CAS鎖產(chǎn)生的ABA問題及其解決方案,需要的朋友可以參考下
    2022-06-06
  • java實現(xiàn)簡單銀行ATM系統(tǒng)

    java實現(xiàn)簡單銀行ATM系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了java實現(xiàn)簡單銀行ATM系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • Maven中Could not find artifact XXXX的錯誤解決

    Maven中Could not find artifact XXXX的錯誤解決

    本文主要介紹了Maven中Could not find artifact XXXX的錯誤解決,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • 淺談spring注解之@profile

    淺談spring注解之@profile

    這篇文章主要介紹了淺談spring注解之@profile,@profile通過配置來改變參數(shù),這里整理的詳細(xì)的用法,有興趣的可以了解一下
    2017-10-10
  • JPA設(shè)置默認(rèn)字段及其長度詳解

    JPA設(shè)置默認(rèn)字段及其長度詳解

    JPA是Java Persistence API的簡稱,中文名Java持久層API,是JDK 5.0注解或XML描述對象-關(guān)系表的映射關(guān)系,并將運行期的實體對象持久化到數(shù)據(jù)庫中。本文主要介紹了JPA如何設(shè)置默認(rèn)字段及其長度,感興趣的同學(xué)可以了解一下
    2021-12-12

最新評論

五莲县| 百色市| 清徐县| 昌都县| 呼玛县| 普兰县| 旌德县| 广平县| 家居| 呼图壁县| 晴隆县| 德兴市| 乌鲁木齐市| 巩留县| 昌图县| 云和县| 屏山县| 丹寨县| 石嘴山市| 祁阳县| 兴业县| 七台河市| 土默特左旗| 唐山市| 波密县| 疏勒县| 将乐县| 平舆县| 毕节市| 兴仁县| 内丘县| 德令哈市| 淳安县| 赤城县| 襄垣县| 柳林县| 墨脱县| 义马市| 孙吴县| 宁远县| 龙山县|