[笔记]|[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框为样式

[笔记]|[java]|[javax.swing]java仿windows记事本笔记

对话框的按钮通常为:“是”、“否”、“取消”和“确认”及组合,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.****.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.****.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.****.net/sinat_31057219/article/details/78742653

StringBuffer用法

初始化:

StringBuffer对象的初始化不像String类的初始化一样,Java提供的有特殊的语法,而通常情况下一般使用构造方法进行初始化。

StringBuffer sb = new StringBuffer();

[笔记]|[java]|[javax.swing]java仿windows记事本笔记

如何清空:

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);
//设置只有在菜单显示的情况下才可以起作用的键盘监听器