需要从多个JLists中删除而不是仅删除一个

时间:2013-04-30 22:01:26

标签: java database

我有3个jlists。我有一个按钮,用于从Patient Jlist中删除所选项目,但我还需要它从我的历史记录Jlist和Invoices Jlist中删除。我从一个删除它但我不知道如何实现从历史记录jlist和发票jlist中删除的代码。

这是我从1个JList中删除的代码!:

JButton btnDeleteDB = new JButton("Delete From DB");
btnDeleteDB.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent arg0) {
      int selectedIndex = patientList1.getSelectedIndex();
      if (selectedIndex != -1) { 
         int x = patientList.get(selectedIndex).getID();
         String query =
            "DELETE FROM `patienttable` WHERE `patientid` ='"+x+"' LIMIT 1";
         try {
            Connection con =
               DriverManager.getConnection(
                  "jdbc:mysql://localhost:3306/denistassignment","root","");
            Statement s = (Statement) con.createStatement();
            s.execute(query);
         } catch (Exception ex) {
            ex.printStackTrace();
         }
         patientListModel.remove(selectedIndex);
         patientList1.remove(selectedIndex);  
      }
   }});
btnDeleteDB.setBounds(320, 500, 125, 23);
contentPane.add(btnDeleteDB);

1 个答案:

答案 0 :(得分:1)

你的代码显示了一些我害怕的设计缺陷,我会在回答你的问题之前列出一些:

  • 删除从DB中删除项目的代码和ActionListener中的列表,并将其放在私有方法中,以便在需要时可以从其他侦听器轻松访问它,以增强可读性并避免代码重复。
  • 您既不关闭数据库连接也不关闭语句。这样做。
  • 不要捕获常规异常,除了在生产之前删除的显式调试代码之外,不要只调用e.printStackTrace()。
  • patientList1.remove(selectedIndex);与从JList中删除项目无关,请参阅此方法的JavaDoc以获取详细信息。简而言之,删除该行。

我认为你所有的JList都在同一个类中,你有成员变量指向每个。如果是这样,那么只需找到相应的对象,这些对象也应该在您查找当前所选JL的索引的同时在其他JLists中删除。我不知道您系统的详细信息,因此可能会迭代其他列表项,将ID与您要删除的ID进行比较,然后只为每个要删除的ID调用listXY.getModel().remove(indexOfItem)。 / p>