swing做一个简单的记事本(有菜单的样式、右键弹出菜单、以及实现“新建”和“打开”功能)每部分的实现
1.继承窗体JFrame,
构造方法里设置窗体的一些基本设置:窗体标题、窗体退出模式、窗体大小(默认大小系数:800,600),窗体居中。其余初始化设置封装成一个方法initComponents();以及有一个事件initEvents();
2.设置菜单样式:
2-1、首先,我们实例了一个菜单栏的对象JmenuBar,并且先设置添加到本对象里this.setJMenuBar(menubar)。
2-2、然后通过观察,我们定义了一个一维数组String[ ]strMenu存放菜单文字、一个二维的String[ ][ ] strMenuItems:存放每个菜单里的菜单项目文字。
ps:这里的我们把菜单项里的分割线,暂时用“-“标记。
2-3、通过双层for循环实现外层循环菜单栏添加菜单,内层循环菜单添加菜单项。
(ps:1.处理“null“,为continue,2、处理“-“为”添加分割线JSeparator;3、可以增加点花样,即增加快捷键设置:(通过菜单项.setMnemonic(‘某个快捷键字符’));
4,自动换行的话:增加点花样:设置复选框:先实例化带上文字的复选框菜单项对象,然后把复选框添加到菜单里:)
3.设置带滚动条的文本域:
3-1、实例化文本域对象,设置实现文本能够换行,需要设置一下文本域:通过调用文本域的.setLineWrap(true);方法。
3-2、再实例化滚动面板的同时把文本域控件作为参数传入,
3-3、 然后设置滚动面板的垂直滚动条。
4.菜单样式已经完成,需要实现添加事件:
(由于事件越来越复杂,我们选择封装事件到一个外部类里,需要用的时候再实例外部类。为了在外部类里实现操作当前的窗体(控件)类,我们定义了一个窗体对象属性,并且通过构造方法,以参数的形式,把窗体传到外部类里来操作。而在窗体类里实例化外部类时把自身当作参数,就可以使用外部类的操作啦,例如在菜单项里添加事件)
?外部类里:
4-1.事件外部类实现ActionListener,
事件外部类里定义了一个窗体对象属性,并且通过构造方法,把窗体类对象作为参数传入来赋值到外部类的窗体对象属性。
4-2.外部类添加事件处理方法:这里我们根据按钮的文本,做出不同处理。通过事件对象的.getActionCommand()获取按钮的文本:
4-3、根据文本做出不同的处理:
?新建:清空文本框;
?打开:先打开显示出文件选择对话框JFileChooser ,用户选择好文件后,读取用户选择文件的内容,然后显示内容到文本域(封装一个文件打开方法和封装一个文件读取操作工具类)
?文件打开方法:
①实例化文件选择对话框JFileChooser的同时,默认当前文件路径为“.”;
②显示打开对话框,设置父窗体为我们定义的窗体对象:调用.showOpenDialog(窗体作为参数);
③获取用户选择的文件,通过.getSelectedFile();
④判断用户所选的文件是否为空,不空则调用文件读取工具类的读取方法。
⑤调用Object.IsNull(读取的内容),判断读取的内容是否存在,存在设置到窗体的文本域里。
?文件读取操作工具类:
① 创建一个读取文件的静态方法(参数是文件路径),返回值是读取文件的内容。
② 创建传入的文件路径的文件,然后判断文件是否存在 .exists( )判断。
③ 定义一个StringBuilder 的变量content,把读取到的内容返回。
④ 开始读取啦:通过封装了FilleRearder的BufferReader一行一行读取,然后添加到content里,这里希望读取的时候添加换行,可以加上System.getProperty(“line.separator”);
?字体:字体的话,就实现修改字体颜色:
① 实例化一个颜色选择对话框对象
② 打开显示颜色选择对话框
③ 获取用户选择的颜色
④ 设置到窗体的文本域的字体前景色
5.实现右键弹出菜单:
(1)实例化右键弹出菜单:JpopupMenu
(2)右键菜单添加菜单项:JMenuItem
(3)添加右键鼠标触发菜单事件:addMouseListener(鼠标适配器对象MouseAdapter)---实现mouseClicked()方法