Project中部分使用的class及methods整理在以下

Look it Java Class Constructor & Methods

Log: ‣



Global variable

private String filePath = ""; //儲存檔案路徑
private String fileName = ""; //儲存檔案名稱
private boolean action = true;
private Window window = new Window(null);

Methods

File

newFile

private void newFile(java.awt.event.ActionEvent evt) {
	action = true;
	if("modified".equals(this.jLStatusText.getText())){
		action = this.saveConfirm();
	}

	if(action){
		filePath = "";
		this.jTextArea.setText(null);
		this.jLFilePathText.setText("");
		this.jLStatusText.setText("unmodified");
		setTitle("New File" + " - Java Text Editor");
	}
}

newWindow

private void newWindow(java.awt.event.ActionEvent evt) {
	java.awt.EventQueue.invokeLater(new Runnable() {
		public void run() {
			JavaTextEditor javaTextEditor = new JavaTextEditor();
			javaTextEditor.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
			javaTextEditor.addWindowListener(new WindowAdapter() {
				public void windowClosing(WindowEvent ev) {
					//javaTextEditor.dispose();
				}
			});
			javaTextEditor.setSize(500, 400);
			javaTextEditor.setVisible(true);
		}
	});
}

openFile

private void openFile(java.awt.event.ActionEvent evt) {
	action = true;
	if(this.jLStatusText.getText() == "modified"){
		action = this.saveConfirm();
	}
	
	if(action){
		JFileChooser file = new JFileChooser(); //選取檔案
		int result = file.showOpenDialog(null); 
		
		if (result == JFileChooser.APPROVE_OPTION) {
			this.jTextArea.setText(null); //清空TextArea
			filePath = file.getSelectedFile().getAbsolutePath(); //取得檔案路徑(filePath為全域變數,方便使用)
			fileName = file.getSelectedFile().getName();		
	
			try {
				InputStreamReader inputStreamReader = new InputStreamReader(new FileInputStream(file.getSelectedFile()), "UTF-8");
				//指定charset decoder為UTF-8,這樣才能讀取中文字體
		    BufferedReader reader = new BufferedReader(inputStreamReader);
		
				String line = reader.readLine(); //讀取string
				while (line != null) {
					this.jTextArea.append(line + "\\n");
					line = reader.readLine();
				}
	
				this.jLFilePathText.setText(filePath);
				setTitle(fileName + " - Java Text Editor");
				this.jLStatusText.setText("unmodified");
			} 
			catch (IOException e) {
				System.out.println("IO ERROR: " + e.getMessage());
			}
		} 
		else {
			System.out.println("Open Cancel"); //若取消選擇則print提示
		}
	}
}

saveFile

private void saveFile(java.awt.event.ActionEvent evt) {
	String content = this.jTextArea1.getText();
	File openFile = new File(filePath);

	if(filePath == ""){ 
		ActionEvent actionEvent = new ActionEvent(this.saveAsMenuItem, 1001, "save as", 16);
    this.saveAsFile(actionEvent);
	} 
	else { 
		try {
			FileOutputStream fileOutputStream = new FileOutputStream(openFile);
			//用FileWriter也能寫入檔案,但無法指定charset encoder
			OutputStreamWriter outputStreamWriter = new OutputStreamWriter(fileOutputStream, "utf-8");
			outputStreamWriter.write(content);
			
			outputStreamWriter.close();
			fileOutputStream.close(); //避免resource leakage

			this.jLStatusText.setText("unmodified");
		} 
		catch (Exception e) {
			e.printStackTrace();
		}
	}
}

saveAs

private void saveAsFile(java.awt.event.ActionEvent evt) {	
	JFileChooser saveAs = new JFileChooser();
	int result = saveAs.showSaveDialog(null);
	
	if (result == JFileChooser.APPROVE_OPTION) {
		File file = saveAs.getSelectedFile();
		filePath = file.getAbsolutePath(); 
		fileName = file.getName(); 
		String content = this.jTextArea.getText();

		try {
			FileOutputStream fileOutputStream = new FileOutputStream(file);
			OutputStreamWriter outputStreamWriter = new OutputStreamWriter(fileOutputStream, "UTF-8");
			outputStreamWriter.write(content);
		
			outputStreamWriter.close();
			fileOutputStream.close();

			this.jLFilePathText.setText(filePath); 
			setTitle(fileName + " - Java Text Editor"); 
			this.jLStatusText.setText("unmodified");
		} 
		catch (Exception e) {
			e.printStackTrace();
		}
	}
	else{
		action = fasle;
	}
}