1. 程式人生 > >【java程式設計】GUI之綜合練習(二)

【java程式設計】GUI之綜合練習(二)

1.選單的包含關係


下面是一個簡單的示例:

需求:實現一個簡單的記事本,功能包括:開啟,儲存,退出

import java.awt.*;
import java.awt.event.*;
import java.io.*;
class MenuDemo 
{
	public static void main(String[] args) 
	{
		new myMenu();
	}
}
class myMenu
{
	private Frame f;
	private MenuBar bar;
	private Menu fileMenu;
	private MenuItem openMenuItem;
	private MenuItem saveMenuItem;
	private MenuItem exitMenuItem;
	private TextArea ta;
	private File file;
	private FileDialog openDia;
	private FileDialog saveDia;
	myMenu()
	{
		init();
	}
	public void init()
	{
		f=new Frame("My Frame");
		f.setBounds(500,400,600,500);
		bar=new MenuBar();
		fileMenu=new Menu("選單");
		openMenuItem=new MenuItem("開啟");
		saveMenuItem=new MenuItem("儲存");
		exitMenuItem=new MenuItem("退出");
		fileMenu.add(openMenuItem);
		fileMenu.add(saveMenuItem);
		fileMenu.add(exitMenuItem);
		ta=new TextArea();
		bar.add(fileMenu);
		f.setMenuBar(bar);
		f.add(ta);
		myEvent();
		f.setVisible(true);
	}
	public void myEvent()
	{
		//窗體關閉事件
		f.addWindowListener(new WindowAdapter()
		{
			public void windowClosing(WindowEvent e)
			{
				System.exit(0);
			}
		});
		//退出子條目事件
		exitMenuItem.addActionListener(new ActionListener()
		{
			public void actionPerformed(ActionEvent e)
			{
				System.exit(0);
			}
		});
		//為openDia子條目新增開啟事件
		openMenuItem.addActionListener(new ActionListener()
		{
			public void actionPerformed(ActionEvent e)
			{
				openDia=new FileDialog(f,"開啟",FileDialog.LOAD);
				openDia.setVisible(true);
				String DirPath=openDia.getDirectory();
				String filename=openDia.getFile();				
				if(DirPath==null || filename==null)
					return;
				file=new File(DirPath,filename);
				ta.setText("");
				try
				{
					BufferedReader bufr=new BufferedReader(new FileReader(file));
					String line=null;
					while((line=bufr.readLine())!=null)
					{
						ta.append(line+"\r\n");
					}
				}
				catch (IOException ex)
				{
					throw new RuntimeException("關閉流失敗");
				}
			}
		});
		//為saveDia子條目新增事件
		saveMenuItem.addActionListener(new ActionListener()
		{
			public void actionPerformed(ActionEvent e)
			{
				if(file==null)
				{
					saveDia=new FileDialog(f,"儲存",FileDialog.SAVE);
					saveDia.setVisible(true);
					String DirPath=saveDia.getDirectory();
					String filename=saveDia.getFile();
					if(DirPath==null || filename==null)
						return;
					File file=new File(DirPath,filename);
				}
				try
				{
					BufferedWriter bufw=new BufferedWriter(new FileWriter(file));
					String text=ta.getText();
					bufw.write(text);
					bufw.close();
				}
				catch (IOException ex)
				{
					throw new RuntimeException("關閉流失敗");
				}
			}
		});
	}
}


相關推薦

java程式設計GUI綜合練習()

1.選單的包含關係 下面是一個簡單的示例: 需求:實現一個簡單的記事本,功能包括:開啟,儲存,退出 import java.awt.*; import java.awt.event.*; import java.io.*; class MenuDemo { publi

java程式設計IO流流操作物件

流操作物件的方法: ObjectInputStream和ObjectOutputStream兩個物件,用ObjectOutputStream儲存的物件只能用ObjectInputStream來進行讀取 Serializable序列化: 每個類在實現Serialiable序列

java程式設計Map集合TreeMap按學生姓名進行升序排序

import java.util.*; /*要對鍵值對進行排序,只能用TreeMap來排序 HashMap底層是雜湊表,雜湊表是隨機的*/ class TreeMapDemo { public static void main(String[] args) {

java學習GUI 圖形程式設計

1,相關外掛 對於新手來說,不要在一開始使用此類外掛。當你能自己寫出來程式碼的時候,才是使用此類外掛的時候,為了加快開發效率。加油! 1)eclipse windowbuilder視覺化設計介面 ①安裝 登陸網址:http://eclipse.org/windo

java程式設計IO流和集合類綜合題目

需求: 1.有5個學生,每個學生有三門功課 2.從鍵盤輸入以上資料(姓名,三門課成績) 3.輸入格式為:zhangshan,30,40,60並計算出總成績 4.把學生資訊和計算出來的總成績按從低到高的順序進行儲存 思路: 1.先建立一個學生物件,實現比較器,讓學生物件自身具

Java程式設計寫入、讀取、遍歷Properties檔案

在Java開發中通常我們會儲存配置引數資訊到屬性檔案。這種屬性檔案能夠是擁有鍵值對的屬性檔案,也能夠是XML檔案。關於XML檔案的操作,請參考博文【Java程式設計】DOM XML Parser 解析、遍歷、建立XML。 在該篇博文中,我將展示怎樣向屬性檔案寫入鍵值對。怎樣讀取屬性檔案

Java併發synchronized偏向鎖和輕量級鎖

synchronized之偏向鎖和輕量級鎖 上下文切換 synchronized 鎖的升級與對比 偏向鎖 輕量級鎖 參考 上下文切換 即使是單核處理器也支援多執行緒執行程式碼執行程式碼,CPU通

Java 程式設計Java 開發實踐與經驗:BetterJava

文章目錄 1. 風格 2. 依賴注入 3. 避免使用 null 4. Immutable-by-default 5. 介面預設方法代替各種 util 類 6. Streams 7. 部署 8. Maven

104.JAVA程式設計Java虛擬機器

      棧是執行時的單位,而堆是儲存的單元。   棧解決程式的執行問題,即程式如何執行,或者說如何處理資料,堆解決的是資料儲存的問題,即資料怎麼放,放在哪兒。  

102.JAVA程式設計stream

public class TestStream { public static void main(String[] args) { List<People> list = createPeople(); Stream<People

101.JAVA程式設計反射

public class ReflectDemo { public static void main(String[] args)throws Exception { Class clazz = Class.forName("com.abyiyi.reflect.P

100.JAVA程式設計列舉詳解

列舉:是有界集合體 public class EnumDemo { enum SexEnum { MAN, WOMAN } public static void main(String[] args){ for(Se

JAVA程式設計--分散式鎖基礎

1.實現分散式鎖需要考慮的幾點: 1.1執行緒和鎖關係 拿最常用的互斥鎖來說 synchronized內建鎖是作用於物件,java中每個物件是唯一存在的, 每個物件的物件頭中包含獲取該物件鎖的執行緒ID,那就保證了執行緒對該物件鎖的唯一性。 ReentrantLock內含Syn

JAVA程式設計--程式碼優化細節

1.儘量指定類、方法的final修飾符 帶有final修飾符的類是不可派生的。在Java核心API中,有許多應用final的例子,例如java.lang.String,整個類都是final的。為類指定final修飾符可以讓類不可以被繼承,為方法指定final修飾符可以讓方法不可以

JAVA程式設計--類載入機制

Object 類的方法 --public Object clone() 需要事項cloneable介面 --public Boolean equal()比較物件 --public String toString() 物件轉化成字串 --public Long hashCode() 輸出

109.JAVA程式設計HashMap迴圈

1.鍵值都需要時使用 1.1鍵值都需要時使用 Map<Integer, Integer> map = new HashMap<Integer, Integer>(); for (Map.Entry<Integer, Integer> entry :

Java程式設計呼叫方法判斷一個數是否是素數

上次寫了素數的判斷,這次又寫了素數的判斷,但是這次做了一些改進,把判斷的程式寫到方法裡面,要使用的時候直接呼叫即可。 本次實現了 程式碼如下: public static boolean judgme

Java程式設計Java多執行緒的實現

多執行緒 程式:是一個指令的集合。 程序:正在執行中的程式,是一個靜態的概念。 執行緒:是程序中的一個單一的連續控制流程,執行緒又本稱為輕量級程序。 一個程序可擁有多個並行的執行緒,一個程序中的執行緒共享相同的記憶體單元,記憶體地址空間,可以訪問相同的變數和物件,而且他們從

Java程式設計可變引數寫法

當你在做專案時,有一個計算傳入引數的和,但引數多少不確定,面對這樣的情況要如何解決呢? 可變引數的寫法請參考下面的例子 package com.ycao.argsTest; public class VarArgs { public static void mai

Java程式設計DOM XML Parser解析、遍歷、建立XML

1、前言 DOM XML Parser介紹 DOM 是 W3C 處理 XML 的標準 API,它是許多其它與 XML 處理相關的標準的基礎,不僅是 Java,其它諸如 Javascript,PHP,MS .NET 等等語言都實現了該標準,成為了應用最為廣泛的 XML 處理方