java GUI实现登录 注册 条件查询功能
背景说明:妹妹的大学作业~~ 对于GUI,我也不是很了解,上学的时候学过很浅显的一些东西,工作中根本不会用到,但是既然有需求,做就完了,只是记录这个过程中遇到的问题以及解决
实现:GUI + JDBC java环境:jdk8 数据库:mysql5.7
先放效果图:
遇到的第一个问题:登录按钮怎么触发 事件监听,也就是调用登录方法。既然是按钮,肯定有和js类似的listener监听器之类的,然后就随手敲了 b2.listener 然后ide就提示了一个addActionListener的方法,根据提示 new了一个ActionListener的对象,如下图
ok,剩下的就是在这个actionPerformed中调用登陆的方法了
遇到的第二个问题:性别复选框怎么弄? 就找了一下GUI的复选框组件,真的有RadioButton,紧接着的问题是,怎么获取复选框选中的值?其实这个也不是个问题,刚开始我是用if判断的,分别判断男女的radiobutton有没有被选中,如果选中就获取选中的值,代码如下:
if(boy.isSelected()){
gender = boy.getText();
}else if(girl.isSelected()){
gender=girl.getText();
}else{
gender = "3"
}
,这么做,感觉不是太好,如果有多个呢,难道要写多个if来判断么?还是要找一找 怎么获取gui复选框选中的值。然后找到了ButtonGroup的组件以及相关的获取ButtonGroup中的值的方法,代码如下:
Enumeration<AbstractButton> btns = bg.getElements();
while(btns.hasMoreElements()){
AbstractButton btn = btns.nextElement();
if (btn.isSelected()){
gender = btn.getText().equals("男")?"1":btn.getText().equals("女")?"2":"3";
break;
}
}
遇到的第三个问题:条件查询 表格死活不显示,以及表头不展示,以及查询完之后,上次的查询结果不会被本次查询结果覆盖
前两个问题是因为 表格设置的布局不太对,表格不显示,表头自然就不会显示了,因为我错误的把表格组件给加到container 窗口组件上了,应该要把表格加入到JScrollPane组件中,JScrollPane组件加入到container窗口组件中。最后一个查询结果不会被覆盖,是因为没有动态的把表格已经渲染过的行数据删除,这个也好解决,只需要在表格渲染前,先判断有没有行数据,如果有的话,先删除表格的行,然后再用新的行数据去渲染。不过需要注意的是JTable没有删除行的方法,JTable的子组件DefaultTableModel才有删除行的方法removeRow
第三个问题解决涉及到的博文连接:
最后需要源码的戳这里!