[筆記]|[java]|[javax.swing]java仿windows記事本筆記

[筆記]|[java]|[javax.swing]java仿windows記事本筆記

代碼

點此查看代碼

JOptionPane

import javax.swing.JOptionPane;
JOptionPane.showConfirmDialog(null, "是否將更改保存到 "+
							title+"?", "記事本",  JOptionPane.YES_NO_CANCEL_OPTION);

JOptionPane爲彈出提示框(這段爲彈出提示框,是否將更改保存到文本)

showConfirmDialog框爲樣式

1

對話框的按鈕通常爲:「是」、「否」、「取消」和「確認」及組合,showConfirmDialog()方法的返回值爲整型常量,當按下一個按鈕時,返回相應的整型常量,「是」、「否」、「取消」和「確認」對應的常量分別是:0、1、2、0,當按下對話框的「關閉按鈕」關閉對話框時,返回值是:-1。

  1. showConfirmDialog(Component parentComponent, Object message);

這個方法由參數「Object message」給出提示信息,按鈕爲默認的「是」、「否」和「取消」。

2.showConfirmDialog(Component parentComponent, Object message, String title, int optionType);

參數「int optionType」確定了按鈕的定製,具體取值是:

DEFAULT_OPTION //「確定」按鈕

YES_NO_OPTION // 「是」、「否」按鈕

YES_NO_CANCEL_OPTION //「是」、「否」、「取消」按鈕

OK_CANCEL_OPTION //「確定」、「取消」按鈕

參數「Object message」給出提示信息,參數「String title」給出對話框標題。

3.showConfirmDialog(Component parentComponent, Object message, String title, int optionType, int messageType);

這個方法增加了一個圖標類型的參數「int messageType」,具體取值是:

ERROR_MESSAGE

INFORMATION_MESSAGE

WARNING_MESSAGE

QUESTION_MESSAGE(默認類型)

PLAIN_MESSAGE(無圖標)

具體應用可參考消息對話框的實例。

  1. showConfirmDialog(Component parentComponent, Object message, String title, int optionType, int messageType, Icon icon);

這個方法增加了一個參數「Icon icon」,通過該參數,用戶可以把自己的圖標添加到對話框中;

Icon icon=new ImageIcon(「grapes.gif」);

Int n=JOptionPane.showConfirmDialog(null,「提示信息」,「標題」,JOptionPane.YES_NO_CANCEL_OPTION,JOptionPane. INFORMATION_MESSAGEicon);

參考博文:http://blog.sina.com.cn/s/blog_c588bc040102wy5m.html

參考博文內有此方法樣例

Java消息提示框JOptionPane的使用方法:

博文鏈接(推薦)

JFileChooser

import javax.swing.JFileChooser;

打開文件

JFileChooser fd = new JFileChooser();
	//fd.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
	fd.showOpenDialog(null);
	File f = fd.getSelectedFile();
	if(f != null){}

注意到,代碼中我用到了showOpenDialog()來打開一個打開文件的對話框,你也可以在setFileSelectionMode中設置成OPEN模式。

保存文件

JFileChooser jf = new JFileChooser();
        jf.setFileSelectionMode(JFileChooser.SAVE_DIALOG | JFileChooser.DIRECTORIES_ONLY);
        jf.showDialog(null,null);
        File fi = jf.getSelectedFile();
        String f = fi.getAbsolutePath()+"\\test.txt";
        System.out.println("save: "+f);
        try{
            FileWriter out = new FileWriter(f);
            out.write("successful!!!");
            out.close();
        }
        catch(Exception e){}

這段代碼中就用到了DIRECTORIES_ONLY 和SAVE_DIALOG的屬性,此時調用showDialog()就會彈出選擇框;然後,調用getSelectedFile()獲得所選中的文件夾,最後新建一個文件,並寫入文本。該段代碼親測成功。

參考博文 https://blog.csdn.net/wzq__janegreen_/article/details/70170934

JFileChooser.setDialogTitle(string dialogtitle); //設置顯示在 jfilechooser 窗口標題欄的字符串。

JFileChooser.showSaveDialog**(Component parent) 彈出一個 「Save File」 文件選擇器對話框。

當按下文件對話框上的「確認」,「取消」按鈕或關閉圖標,showSaveDialog()方法會返回下列常量之一:JFileChoos.APPROVE_OPTION JFileChoos.CANCEL_OPTION

JFileChooser.setSelectedFile()和JFileChooser.getSelectedFile()

JFileChooser這個類中有一個setSelectedFile()和getSelectedFile() 方法,是用來設置和獲取一個選中的文件的,返回類型是File類型。 一般用於Java Gui開發時上傳文件時使用

PrintStream

使用PrintStream輸出數據,輸出文本 參考博文點此

找不到文件FileNotFoundException 異常

printStackTrace()方法的意思是:在命令行打印異常信息在程序中出錯的位置及原因。

EG:

try {
								out = new PrintStream(new FileOutputStream(file)) ;
							} catch (FileNotFoundException e1) {
								// TODO Auto-generated catch block
								e1.printStackTrace();
							}

鼠標右鍵監聽器

public void mouseReleased(MouseEvent e) {
        		if(e.getButton() == MouseEvent.BUTTON3) {
        			jpm.show(txt, e.getX(), e.getY());
        		}
        	}
        });

e.getButton() == MouseEvent.BUTTON3

當鼠標右鍵按下時;執行

文本超行實現滾動

JScrollPane scroll = new JScrollPane(txt, ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
//txt爲可輸入文本框

setLocationRelativeTo()

public void setLocationRelativeTo(Component c)

設置窗口相對於指定組件的位置。

如果組件當前未顯示或者 c 爲 null,則此窗口將置於屏幕的中央。

中點可以使用 GraphicsEnvironment.getCenterPoint 確定。

參考博文:https://blog.csdn.net/u010995220/article/details/51120372

setResizable()

setsetResizable(boolean resizable)

參數爲boolean類型,resizeable值爲true時,表示在生成的窗體可以自由改變大小;

setDefaultCloseOperation()

this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

設置按"X"按鈕時候的動作,一般都會把它設成退出程序,相當於是System.exit(0);的動作

如果沒這句話……你看起來沒影響……那麼請打開任務管理器吧……如果不信的話~你可以註釋掉這句,然後打開 關閉 如此往復幾百次……恭喜你,死機了……(答案源自百度知道)

getSource()

ActionEvent 的 getSource() 繼承自 EventObject;

返回最初發生 Event 的對象。

FileFilter

FileFilter使用指定擴展集的過濾器的實現。文件的擴展名是最後一個「。」之後文件名的一部分。名稱不包含「。」的文件。沒有文件擴展名。文件擴展名比較不區分大小寫。

也就是說:JFileChooser類有setFileFilter方法,用來過濾 可以選擇窗口中哪些後綴的文件,就想你想上傳文件到服務器彈出窗口,然後讓你選擇文件時,如果設置了FileFilter爲doc後綴格式的文件的話,窗口中只顯示doc後綴的文件,其他的不顯示。

getSelectedFile()與getPath()

返回選中的文件與返回定義時的路徑

BufferedReader

BufferedReader 是緩衝字符輸入流。它繼承於Reader。
BufferedReader 的作用是爲其他字符輸入流添加一些緩衝功能。

readLine()與read()

  • readLine()
    功能:讀取一個文本行。
    一定要注意:
    1、讀入的數據要注意有/r或/n或/r/n
    2、沒有數據時會阻塞,在數據流異常或斷開時纔會返回null
    3、使用socket之類的數據流時,要避免使用readLine(),以免爲了等待一個換行/回車符而一直阻塞
    4、readLine()是一個阻塞函數,當沒有數據讀取時,就一直會阻塞在那,而不是返回null
    5、readLine()只有在數據流發生異常或者另一端被close()掉時,纔會返回null值。
    6、如果不指定buffer大小,則readLine()使用的buffer有8192個字符。在達到buffer大小之前,只有遇到」/r」、」/n」、」/r/n」纔會返回。

    7、該方法讀取一行文本,當遇到換行符」\n」,回車符」\r」或者回車符後面緊跟着換行符時,該行結束並返回。沒有數據時,將會一直處於等待狀態。因此在進行網絡連接時,應該避免使用該方法。

  • read()

    功能:讀取單個字符的個數,如果已經讀完的話會返回-1 (其範圍從 0 到 65535 )

    參考原文:https://blog.csdn.net/sinat_31057219/article/details/78742653

StringBuffer用法

初始化:

StringBuffer對象的初始化不像String類的初始化一樣,Java提供的有特殊的語法,而通常情況下一般使用構造方法進行初始化。

StringBuffer sb = new StringBuffer();

2

如何清空:

StringBuffer類沒有clear方法,不過可以通過下面兩種方法來清空一個StringBuffer的實例:

方法一:使用delete方法

sb.delete(0,sb.length());

方法二: 使用setLength方法

sb.setLength(0);

參考博客:http://outofmemory.cn/code-snippet/7378/java-stringbuffer-clear-or-clean

java文本的撤銷—addUndoableEditListener(UndoableEditListener listener)

import javax.swing.undo.UndoManager;
UndoManager .addUndoableEditListener(UndoableEditEvent .getEdit());

在就是在撤銷操作中調用UndoManager .undo()就可以了,還有canUndo()這個方法很重要,用於判斷undo操作是否成功,如果成功就返回true。

在恢復操作中調用UndoManager .redo()可以實現恢復,還有canRedo()方法判斷redo操作是否成功,如果成功返回true。

關於setAccelerator與setMnemonic的區別

setMnemonic 設置的是括號裏的。只有在菜單顯示的情況下才可以起作用
setAccelerator 設置的是後面的 Ctrl + O 之類。

鍵盤監聽器

JMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F5,0));
//設置單鍵監聽器
JMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A,ActionEvent.CTRL_MASK));
//設置組合鍵監聽器
JMenuItem.setMnemonic(KeyEvent.VK_H);
//設置只有在菜單顯示的情況下才可以起作用的鍵盤監聽器