说明:
1.本文为Java窗体的功能实现(加载数据、删除一行数据、添加订单)
2.需要用到另外两个类 DB.java 和 BaseDao.java 两个类(该两类,详见前期文章 http://t.csdn.cn/7m4pk)
3.数据库的设计要求,详见试题
主界面:
功能一:程序一执行,表格加载数据
具体实现步骤如下2步:
1. 在主窗体代码的最顶部构造器中,增加编写如下代码(红色框内代码)
2. 自定义初始化表格数据的一个方法:(在构造器的下方编写,如上图:)
源代码如下:
//自定义的方法:用于初始化表格数据
private void initTable(String sql) {
// 1.准备好所有的数据,放入 data 中
Vector data = new Vector();
ResultSet rs = BaseDao.cx(sql); // 查询数据库
try {
while (rs.next()) {
Vector line = new Vector(); // line 代表存放一行数据的集合
int id = rs.getInt(1); //分别从数据库中取出对应的值
String name = rs.getString(2);
double num = rs.getDouble(3);
String oid = rs.getString(4);
String desc = rs.getString(5);
line.add(id); //将上面获取到的每个数据放到行集合中
line.add(name);
line.add(num);
line.add(oid);
line.add(desc);
data.add(line); // 将当前行存入大的data中
}
} catch (SQLException e) {
e.printStackTrace();
}
// 2.准备好标题文字,放入 bt 中
Vector bt = new Vector(); // bt 用于存放标题
bt.add("编号");
bt.add("商品名字");
bt.add("商品价格");
bt.add("订单编号");
bt.add("订单描述");
// 3.最终任务就是用上面准备好的 数据 和 标题 填充 表格
jTable1.setModel(new DefaultTableModel(data, bt));
}
功能二:删除按钮的功能
实现步骤
1. 在主窗体中双击删除按钮,会自动转到编写该按钮事件的代码:
2.在上面自动打开的代码方法体内编写删除的功能,代码如下:
源代码如下:
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
int rowCount = jTable1.getSelectedRowCount(); // 获取选中的行数,如果为0,则说明没有选中任何行
if (rowCount == 0) {
JOptionPane.showMessageDialog(null, "您未选择任何数据"); //弹出一个带有确定按钮的对话框
} else {
//弹出带有两个按钮:确定和取消的对话框,如果点击【确定】则返回值为0,点击【取消】返回值为1
int isOk = JOptionPane.showConfirmDialog(null, "您确定要删除吗?", "删除确认",JOptionPane.YES_NO_OPTION);
if (isOk == 0) {
// 如果值是 0 ,说明点击了确定要删除
int selectedRow = jTable1.getSelectedRow(); // 获取选中行的索引
int id = (Integer) jTable1.getModel()
.getValueAt(selectedRow, 0); // 找到要删除的行的第一列,其实就是要删除的记录的主键
String sql = "delete from tb_order where id=" + id; // 拿到主键值后,组装出删除的sql语句
boolean zsg = BaseDao.zsg(sql); // 执行删除操作,并返回是否成功
if (zsg) {
JOptionPane.showMessageDialog(null, "删除成功!");
// 删除后,调用表格初始化的方法,重新加载数据,使表格加载显示最新数据:
initTable("select * from tb_order");
} else {
JOptionPane.showMessageDialog(null, "删除失败!");
}
}
}
}
功能三:添加 功能
实现步骤:
1. 首先把【添加窗体】的界面通过拖拽的方式创建好,并设置默认的关闭属性为 DISPOSE
2. 在【主窗体】点击【添加】按钮,用代码实现打开【添加窗体】:
在==【主窗体】==的【添加】按钮上双击,自动转到编写代码的地方,编写打开新窗体的代码:
双击上面按钮的空白区域,自动进入下面的代码区域:
编写代码如下:
3. 在【添加窗体】的【确认添加】按钮上编写处理程序:
双击以上按钮后,自动转到如下代码处:
编写代码如下图:
源代码:
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
// 1. 获取所有文本框的数据
String name = jTextField1.getText(); // 获取商品名字。jTextField1是第一个输入框的名字(可以改名)
String price = jTextField2.getText(); // 获取价格
String oid = jTextField3.getText(); // 获取商品编号
String desc = jTextField4.getText(); // 获取商品描述
// 2.如果商品名、价格、商品编号有任意一个没填写,则给出提示
if ("".equals(name) || "".equals(price) || "".equals(oid)) {
JOptionPane.showMessageDialog(null, "请录入完整信息!");
}
// 3.如果所有的文本框都填写了,则进行插入操作:
else {
// 所有从文本输入框中获取到的内容都为String字符串类型,要想插入到数据库,必须与数据表中的数据类型一致。
// 因此,需要对价格进行转换(数据库表中价格字段是小数类型)
double pri = Double.parseDouble(price); // 将文本框获取的字符串转换为小数
// 拼装sql插入语句:
String sql = String.format(
"insert into tb_order values(null,'%s',%f,'%s','%s')",
name, pri, oid, desc);
if (BaseDao.zsg(sql)) {
// 真正的执行,并根据返回结果给出提示
JOptionPane.showMessageDialog(null, "新增商品成功!");
// this.setVisible(false); //隐藏当前窗体
this.dispose(); // 销毁当前窗体(即 关闭新增窗口)
} else {
JOptionPane.showMessageDialog(null, "新增商品失败!");
}
}
}
4. 返回主页按钮
可按照直接关闭当前窗体处理即可
在该按钮上双击,编写如下代码:this.dispose(); // 销毁当前窗体(即 关闭新增窗口)