NotepadBaseOnJava项目总结与问题(2)
来源:互联网 发布:淘宝的广告价位图 编辑:程序博客网 时间:2024/06/06 22:13
1.一开始就要设计模型
开始的时候把几乎所有代码都放在了mainGUI类中,后来为了GUI和Controller分开花了很多功夫。
但是一些可重用的类,比如FontChooser,FileChooser,FindNReplace,GotoLine等是否需要把界面和后台放在一个类中?
2.初始化单例类要注意死循环的问题
public static MainGUI getInstance(){if(instance==null)instance=new MainGUI();return instance;}
在new mainGUI()的时候,系统初始化其他单例类。
private Menu menuA=Menu.getInstance();private GotoLine gotoL=GotoLine.getInstance();private FindNReplace findR=FindNReplace.getInstance();private StatusBar bar=StatusBar.getInstance();private FontChooser fontC=FontChooser.getInstance();
注意在其他单例类的初始化部分中,不能调用mainGUI的getInstance(),否则前一个getInstance()没有返回,再去call同一个getInstance(),就会死循环。
private MainGUI main=MainGUI.getInstance();
应放在Init()中等待后面再call。
3.自定义JList的Item应使用DefaultListCellRenderer
为了实现字体对话框中,列表字体随选择项变化,要实现ListCellRenderer接口
class FontCellRenderer implements ListCellRenderer
protected DefaultListCellRenderer defaultRenderer = new DefaultListCellRenderer();
这个函数返回一个Component,把它转换成JLabel或者JPanel等自定义的组件作为JList的Item。
JLabel label = (JLabel) defaultRenderer.getListCellRendererComponent(list, value, index,isSelected, cellHasFocus);
如果不用这个函数,就要自己实现选中项目时颜色的变化之类的东西。
4.String.lastIndexOf(content,startindex)注意startindex
startindex这个索引代表的字符也在查找之列,在实现查找下一个的时候,应把上一次返回的startindex-1.
5.在Frame上Add,Remove,setVisable组件后不会自动变更Frame的大小,需要手动pack()。
https://code.csdn.net/ffyjd/notepadbaseonjava
0 0
- NotepadBaseOnJava项目总结与问题(2)
- NotepadBaseOnJava项目总结与问题(1)
- NotepadBaseOnJava项目总结与问题(3)
- 软件项目管理问题与总结
- 项目中遇到类似的时区与时间问题总结(令牌问题)-java编程
- 五子棋项目 中遇到的问题与总结
- Apache 部署 Django 项目过程记录与问题总结
- jboss项目问题总结
- 项目中小问题总结
- 项目问题总结
- 项目问题总结
- 项目问题总结
- 项目中问题总结
- 项目中问题总结:
- 项目部署问题总结
- 项目问题总结
- 项目中问题总结
- 项目安全性问题总结
- 跨平台
- 封装、继承、多态
- 哈夫曼编码
- 弹出输入法时,底部布局跟随输入法移动至输入法顶部
- POJ 3233 Matrix Power Series (教练,我想学线代……)
- NotepadBaseOnJava项目总结与问题(2)
- HDOJ 3487 Play with Chain【splay】
- JSON VS XML 解析
- 重写和重载的区别
- 如何禁止运行cmd
- linux配置表名不区分大小写
- 数据库
- 编程基础之计算机网络
- 2012蓝桥杯【初赛试题】古堡算式