Swing中实现增删查改项目后获得的经验

来源:互联网 发布:女装批发的软件 编辑:程序博客网 时间:2024/05/16 06:35

                                      初次接触Swing之后的经验

      通过两周的项目实战,让我对Swing有了初步的了解。虽然现在Swing不再被使用,写本博客的目的是,想解决像我一样的小白,在以后老师讲完JDBC和数据库之后,留一个有关数据交互的小项目时候,能够帮助大家一些小的问题。

首先我先和大家分享一下,我在做这个增删查改的小项目遇到的问题:

  1.这次项目中,我接触最多的NULLPOINTEREXCEPTION,因为刚学完java SE 加 JDBC和 数据库,所以在写项目的时候经常会出现不去对对象实例化(new  XXXXX()),造成很多的空指针异常。这点希望能够帮助 刚接触项目的小白们。

  2.要注意的是SQLEXCEPTION,也就是SQL语句的准群性很重要,往Myeclipese里面写语句的时候,最好先再数据库里面测试好语句以后再往Myeclipese里写,这样能减免不必要的错误。当设置动态语查询的时候(SQL语句中有“?”的)这样我们要注意写了几个问号,要去对应几个PreparedStrement下的相应类型的参数。 eg:INSERT INTO TABEL VALUES(MY_ID.NEXTVAL,?,?,?,?,?)。

还有一个是SQLRecoverableException异常,这是因为数据库的服务和监听没有开,也就是说数据库没开。

  3.在做Swing界面显示的时候,他要和数据库进行交互,在对JTable进行拖拽的时候,一定要按住JTable自己去画一个界面,而不是直接放在JFrame中然后拖拽点,这样是不对的,我在这就卡了半天,所以再跟数据库交互的时候,一直没有传过来值。

(左图是正确的,右图是错误的)****记住要先点击ABSOLUTE LAYOUT  这样能使你界面中的操作都可以移动。

   4.我在对数据进行更新的时候也遇到了问题,因为我弄的修改是选中要修改的行,之后跳转到修改的页面,之后将选中的行内的数据全部显示在这个页面中,如下图。所以里面涉及到实体类里面的值回传的问题,这里需要一个带有实体类对象的构造函数,将你的用户信息传到这个要修改的界面中,像public Update(User user) 之后将user里面的数据获取到 text中id = new JTextField(user.getId().toString());像这样就获取到ID了。


然后跟大家分享一下,我在做这个项目之后,所学到的东西,希望能帮助大家。


1.创建JTbale时候,在拖完控件之后,王丽写入代码,你可以用new JTable(二维数组,一维数组);这个方法来实现你要创建的这个Table 。(二维数组里面放的是和数据库交互的数值,一位数组放的是你要现实的数据库相应字段对应的名字(这个名字一定要和数据库里面所有的字段对应上,不能缺一个,或者多一个,因为你的二维数组里面放的是数据库里面的内容。))。

除了new JTable之外,还有一个和其类似的方法。这个方法我没用,所以不太熟悉,只是知道一小部分。

先创建一个DefaultTableModel model=new DefaultTableModel(二维数组,一维数组);(二维数组和一维数组放的东西和上面的内容一样),然后再new JTable(model);这样创建出来的table二者是一样的,后者能对table进行一些约束,显得格式更好看些。

2.在你点击某一监听事件的时候,想要弹出提示框,这时候就用到JOptionPane包下面的内容。具体的大家可以去查一下API。就是有一个要跟大家说一下,就是在选择是否框的时候,会出现点击哪个按钮,去执行哪个事件的问题,这里我们要对其判断一下,到底是进入否事件还是是事件。我这里只是执行了是的请求,否没做任何反应。这里你在点击是的时候,他就会执行是这个事件的命令。

int n =JOptionPane.showConfirmDialog(null,"请确认是否删除!","请求框!",JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE);
 if(n==JOptionPane.YES_OPTION)

3.在这个项目中,我写了一个小小的验证码功能,用在登录。没有太复杂,来和大家分享一下。

public String checkLogin(){
String str ="" ;
String string="ABCDEFGHIJKLMNOPQRSTUVWSYZabcdefghijklmnopqrstuvwxyz0123456789";

for(int i =0;i<4;i++){
str+=string.charAt((int)(Math.random()*62));
}
return str;
}

   这样我们能够随机获取里面的4位字符,并且组成一个字符串。在登录的时候只要判断验证码是否为空,是否相匹配就行了。在界面里面,我用的JText来接收的获取到的验证码,将其设置成只能看到不能修改的效果。如下效果:


4.和大家分享几个正则表达式:

 a.用来匹配用户名的是

  String name = "[^?!@#$%\\^&*()]+";(这个是非法的字符)
Pattern pattern = Pattern.compile(name);
Matcher matcher = pattern.matcher(username);
boolean flag = matcher.matches();

!checkUserName(username) (因为是非法的字符,所以判断的时候加一个!,对他来进行取反)这时候用户名里面只要不出现这几个字符就行了。

b.用来匹配密码的^[([a-z0-9A-Z]+[\\-|\\+|\\*|\\/|\\=|\\_|\\?|\\>|\\<|\\,|\\.]?)([a-z0-9A-Z]+)]{6,15}$  保证密码有数字,可有符号,有字母,并且至少是6位以上包括六位,不超过十五位包括十五。

c.用来验证性别和权限的

String check4="^['男'|'女']$";(性别)
String check5="[^?!@#$%\\^&*()]+"(权限);

d.用来匹配邮箱的(常用)

String check2 = "^([a-z0-9A-Z]+[_|\\.|-]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+)?\\.+[a-zA-Z]{2,}$";


 最后和大家分享一下我的项目心得:

 1.  做项目,不要分哪块重要哪块不重要之分,我们都要尽自己最大的努力做到最好。千万不要因小失大,哪怕这个地方我们再熟悉,也有要敲一下的必要,也许你会遇到不一样的问题。

 2.遇到问题千万不要退缩,要积极去面对,去想办法去解决,如果实在解决不了,暂时先放一下,去看看别的地方,返回来再做这块,那时候也许你就能想明白了,这就好比我们的小初高的每次考试一样,不要挂在某一个地方。

 3.当你接到一个不熟悉的项目的时候,想好里面要用到什么类,然后先去查下API,你会发现你的项目就会好做很多。

4.最后给大家展示一下我的项目的效果图吧。之前的登录已经给大家上传了,我就在跟大家分享一下我的管理员和用户的界面吧。显示管理员界面。

这里的查询是模糊查询,这个就要求在SQL语句中实现了。


这里我就不给大家一一展示各种功能了,如果有兴趣大家能找我,我给大家发下代码,或者解决下遇到的问题都行,让我们共同进步。下面是用户界面


这个就是我的普通用户的界面了。能够修改自己的个人资料,还能添加自己的爱好等。这里要强调一下生日,因为这里面涉及到了util类型的Date和Sql类型的Date之间的转换

************************************我们在写实体类的时候是util包下的Date类型,在进行数据库传值的时候要将util的转换成sql的,new  Date(user.getDate().getTime())这样就能进行传值了。

你在界面里面输入Date值的时候 要先给他格式化一下,这样就可以得到你想要的日期类型了。new SimpleDateFormat("yyyy-MM-dd").parse(up.birthday.getText().trim())



1 0
原创粉丝点击