这是我的第一篇掘金博客,开始掘金写作之路。
这个项目是大一自学Java后完成的,一直想写文章总结,温故而知新,拖了好久好久,终于写下了第一篇,先试试水吧。
这个项目是Java+Mysql实现的,项目功能基本完成开发,还额外添加了一个音乐功能。因为在大一时刚接触编程,期间遇到非常多的问题,也不懂得如何自学才能更好的学习,磕磕绊绊的做了两个月才完成,主要记录一下如何实现功能和解决问题。
项目简介 该项目为Java+Mysql实现的简单通讯录系统,该系统能实现对组和用户联系人增删改查,还有对背景音乐的开启与关闭。
项目功能 1、登录
2、对分组的增加,删除,修改
3、对列表好友的增加,删除,修改和查询
4、右键弹出菜单对所选中的分组/好友进行操作
历程 开始时,我用Java抽象窗口工具包提供的GUI(图形用户界面)的组件类来设置用户界面,在设计界面时,没有使用布局,而是设置组件的位置及大小,这是第一个错误;我把所有需要的用户界面设计完成后,根据所设计的界面来设计数据库,这是第二个误区;在设计数据库时使用外键,这个是不太建议的,因为使用外键有过多的限制,而且外键过多导致数据库复杂。
项目展示
实现点
1、用JFrame作为底层容器,用JPanel实现面板,JFrame是底层容器,中间容器必须被添加到底层容器中才能发挥作用。
2、使用了FlowLayout,FlowLayout类的构造方法可以创建一个居中对齐的布局对象,使用add方法将组件顺序地添加到容器中,组件按先后从左到右排列,排满一行后转向下一行排列,组件间默认水平和垂直间隙为5个像素,大小默认最佳。
3、JComponent类的子类实现菜单条(JMenubar)、菜单(JMenu)、菜单项(JMenuItem),好友列表用树状控件实现。
JPanel jPanel = new JPanel(new FlowLayout(FlowLayout.CENTER, 30, 50));
//菜单条
JMenuBar menubar;
//菜单
JMenu[] jMenus;
//菜单项
JMenuItem[] jItems;
JMenuItem[] jItems2;
JMenuItem jItem = new JMenuItem("帮助");
//按钮
JButton[] buttons;
//树状控件
DefaultMutableTreeNode node = new DefaultMutableTreeNode("好友列表");
DefaultMutableTreeNode root;
DefaultMutableTreeNode you;
JTree tree = new JTree(node);
4、事件处理:
menuItem[i].addActionListener(this);
事件源注册监视器,当事件源触发事件后,监视器调用接口中的actionPerformed()对发生的事件做出处理,ActionEvent类会事先创建的事件对象就会传递给该方法的参数e.
public void actionPerformed(ActionEvent e) {
// TODO 自动生成的方法存根
}
5、鼠标事件:
tree.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
if (evt.getModifiers() == InputEvent.BUTTON3_MASK) {
popupMenu.show(tree, evt.getX(), evt.getY());
}
}
});
addMouseListener()注册监视器,处理鼠标事件。MouseListener接口有多个方法。使用mouseClicked(MouseEvent)鼠标点击右键显示菜单进行操作,InputEvent类中的常量BUTTON3_MASK表示为鼠标右键
小结
这篇先写这点点,还有许多没有整理完成,在后面会继续整理。
在上面提到的两个做项目的错误,第一:在设计页面时,使用布局能使代码简洁,提高代码的可读性,页面修改也方便,布局能让页面整齐美观。第二:在开始一个项目时,先要分析项目,编写需求规格说明书,进行数据库设计,数据库设计尽量贴合功能,减少在开发过程中修改数据库,把项目搭建好后在进行页面设计。
最最重要一点是编写代码要规范,命名规范等,要不然出现问题让人头大!!!