import java.awt.*;
import java.sql.*;
import java.util.*;import javax.swing.*;
import javax.swing.table.*;import conn.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.event.ListSelectionListener;
import javax.swing.event.ListSelectionEvent;/**
 * <p>Title: 农机软件</p>
 *
 * <p>Description: </p>
 *
 * <p>Copyright: Copyright (c) 2007</p>
 *
 * <p>Company: </p>
 *
 * @author not attributable
 * @version 1.0
 */
public class formLeibie extends JFrame {
    BorderLayout borderLayout1 = new BorderLayout();
    JToolBar jToolBar1 = new JToolBar();
    JButton jButton1 = new JButton();
    JButton jButton2 = new JButton();
    JButton jButton3 = new JButton();
    JTextField jTextField1 = new JTextField();
    JScrollPane jScrollPane1 = new JScrollPane();
    DefaultTableModel model=new DefaultTableModel();
    //定义JTable的模式
    JTable jTable1 = new JTable(model);
    //值链表,用于建立对应关系
    LinkedList linkID=new LinkedList();
    //生成数据库操作类新实列,用于数据库操作
    connDB con=new connDB();
    //当前操作表
    String surTable=new String();
    //当前操作代码ID
    String curID=new String();
    //操作类型
    String operType=new String();
    public formLeibie() {
        try {
            jbInit();
            fullCode();
        } catch (Exception exception) {
            exception.printStackTrace();
        }
    }    private void jbInit() throws Exception {
        getContentPane().setLayout(borderLayout1);
        jButton3.addActionListener(new formLeibie_jButton3_actionAdapter(this));
        jButton1.addActionListener(new formLeibie_jButton1_actionAdapter(this));
        this.getContentPane().add(jToolBar1, java.awt.BorderLayout.NORTH);
        jButton2.setText("退出");
        jButton3.setText("添加");
        jToolBar1.add(jButton3);
        jToolBar1.add(jButton1);
        jToolBar1.add(jButton2);
        jToolBar1.add(jTextField1);
        jTextField1.setVisible(false);
        this.getContentPane().add(jScrollPane1, java.awt.BorderLayout.CENTER);
        jScrollPane1.getViewport().add(jTable1);
        jTable1.getSelectionModel().addListSelectionListener(
              new   ListSelectionListener()   {
                  public   void   valueChanged(ListSelectionEvent e)
                  {
                      if   (!e.getValueIsAdjusting())   {
                          String value=(String)jTable1.getValueAt(jTable1.getSelectedRow(),1);   //选中行的第一个字段
                          jTextField1.setText(value);
                         }
                  }
              }
          );        jButton1.setText("删除");
        this.setSize(284,348);
        Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
        Dimension size = getSize();
        int x = (screenSize.width - size.width) / 2;
        int y = (screenSize.height - size.height) / 2;
        setLocation( x, y );
        setTitle("农机软件-类别管理");
        this.setResizable(false);
        this.setVisible(true);    }
    private void setOperType(String type)
    {
       operType=type;
    }
    void fullCode(){
        String sql="select * from tab_warestyle";
        Vector tempvector;
        //清空值链表
        linkID.clear();
        //清空列表头
        model.setColumnCount(0);
        //清空结果列表
        model.setRowCount(0);
        //初始化结果列表表头
        model.addColumn("");
        model.addColumn("类别");
        try
        {
            //传入查询语句,得到结果集
            ResultSet rs=con.getResult(sql);
            //判断结果集里是否为空
            if(rs.first())
            {
                int i=0;
                //若不为空,移动游标,循环加载数据
                rs.beforeFirst();
                while(rs.next())
                {
                    tempvector=new Vector(1,1);
                    tempvector.add(i=i+1);
                    linkID.add(i);
                    tempvector.add(rs.getString("Style"));
                    model.addRow(tempvector);
                }
              model.fireTableDataChanged();
           }
           con.close();
        }
        catch(Exception ex){
            ex.printStackTrace();
        }
        setOperType("none");
    }    /**
     * setOperType
     *
     * @param string String
     */
    public static void main(String[] args) {
        formLeibie formleibie = new formLeibie();
    }    public void jButton3_actionPerformed(ActionEvent e) {
        formLeibieAdd forl=new formLeibieAdd();
        this.dispose();
    }    public void jButton1_actionPerformed(ActionEvent e)  {
            Object[] options = {"确定", "退出"};
            if (JOptionPane.showOptionDialog(null, "您是否真的要删除类别信息", "农机软件",
                                             JOptionPane.OK_CANCEL_OPTION,
                                             JOptionPane.WARNING_MESSAGE,
                                             new
                                             ImageIcon("/jbproject/nongji/image/24.gif"),
                                             options, options[0]) == 0)
            {
                String sql="select * from tab_wareinif where Style='" + jTextField1.getText().trim() + "'"; //查询商品表中是否有此类别的记录
                String sql1="delete from tab_warestyle where Style='" + jTextField1.getText().trim() + "'";//删除语句
                ResultSet rs=con.getResult(sql);
                try
                {
                    if (rs.first())
                    {
                        JOptionPane.showMessageDialog(null, "商品表中还有此类别的记录,不能删除", "农机软件",
                                              JOptionPane.WARNING_MESSAGE,
                                              new
                                              ImageIcon(
                        "/jbproject/nongji/image/24.gif"));
                    }
                    else
                    {
                        if(con.executeSql(sql1))
                        {
                            JOptionPane.showMessageDialog(null, "删除类别成功", "农机软件",
                                JOptionPane.WARNING_MESSAGE,
                                new
                                ImageIcon("/jbproject/nongji/image/24.gif"));
                            con.close();
                            fullCode();
                                                      
                        }
                        else
                        {
                            JOptionPane.showMessageDialog(null, "删除失败", "农机软件",
                                JOptionPane.WARNING_MESSAGE,
                                new
                                ImageIcon("/jbproject/nongji/image/24.gif"));                        }                    }
                }
                catch(Exception ex){}
            }
           else
           {
                    return;
            }
        }
    }class formLeibie_jButton1_actionAdapter implements ActionListener {
    private formLeibie adaptee;
    formLeibie_jButton1_actionAdapter(formLeibie adaptee) {
        this.adaptee = adaptee;
    }    public void actionPerformed(ActionEvent e) {
        adaptee.jButton1_actionPerformed(e);
    }
}
class formLeibie_jButton3_actionAdapter implements ActionListener {
    private formLeibie adaptee;
    formLeibie_jButton3_actionAdapter(formLeibie adaptee) {
        this.adaptee = adaptee;
    }    public void actionPerformed(ActionEvent e) {
        adaptee.jButton3_actionPerformed(e);
    }
}

解决方案 »

  1.   

    JTable 是游标方式 INSERT UPDATE DELECTE 后 用游标方式 从第一条记录显示到最后一条 那样就更新啦!调用SELECT查询   JTABLE   是游标方式的   用结果集的   last()   方法走到最后一条   并且显示   就可以更新了!~ 
        如果还要操作   再调用再调用   first()方法使游标返回到第1行前面.
      

  2.   

    数据删除完了以后,应该再查询一次,并将结果重新显示在table中。
      

  3.   

    代码怎么感觉这么乱啊。
    1.注释首先就不规范。
    2.变量命名都看不出是什么意思,什么jButton1,jButton2等,谁知道是啥。
    3.画面显示项目,message,text等都属于硬编码,将来不好维护。
    4.JOptionPane.showMessageDialog啥的,系统的提示消息本来也就那么几种(消息,警告,错误),干吗不封装一下,以至于将来想换个图片都得一个个的修改,将来如何维护。
    5.画面显示,业务逻辑,数据库操作,全部都在画面上,基本的层次结构都没有,业务复用,代码复用,都没有考虑,起码也要考虑考虑MVC结构吧。
    6.Exception压根就没有处理,直接printStackTrace(); 给谁看啊?甚至都有catch(Exception   ex){} ,发生错误也不知道。
    7.数据库的操作也就那么几种逻辑,封装封装吧,剩下的不同就是SQL语句加参数,还有SQL啥的最好不要出现在程序中,统一管理也好维护吧。
    8.应该多考虑考虑代码的复用,像这种简单的MIS系统,Table的数据增删改分页啥的基本功能,完全可以考虑封装一下JTable ,实现对数据的控制,相应的增删改都可以直接封装,这样岂不是每个画面都是简单设置设置就完成功能了么?质量也高啊
    9.针对一个系统而言,设计的时候画面应该也没有太多的风格吧,JFrame 完全可以封装成几大类,通用的属相,功能都可以封装,将来换风格,也容易啊,除此之外,系统中还有很多类似的功能,都可以提取的,哪怕是一个个小小的下拉列表框都可以在设计中考虑到复用的。看看代码,就忍不住说几句,批判得不对的地方,别生气哈
      

  4.   

    让它在执行一次sql语句
    从数据库中全部取出
      

  5.   

    删除后你重新设置一下表模式,不用直接操作表的行。
    TableModel defaultTableModel = new DefaultTableModel(表中的数据, 表头);
    表.setModel(defaultTableModel);这样就可以更改表中数据拉