shan333

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()方法

 

 

 

 

分类:

技术点:

相关文章: