目前,我正在研究JAVA程序,该程序与使用XAMPP创建的DB进行通信。 我使用不同的JPanel来显示数据库中的信息,并为用户提供操作数据的不同选项。
我有一个名为EmployeePanel的类,它扩展了JPanel,此类中的代码检索数据库中的所有信息,这些信息保存在Employee Table中并显示在JTable中。 当我在JAVA程序中操作数据时会出现问题。例如,当我调用命令时 (从此表中删除员工后)
cl.show(cardwrapper, "Employee");
JTable中的信息未从DB更新。
以下是从数据库中删除条目的代码。
public void DeleteNandoca(){
try
{
Class.forName("com.mysql.jdbc.Driver");
Connection connection = DriverManager.getConnection(url, userid, password);
PreparedStatement st = connection.prepareStatement("DELETE FROM `employee` WHERE EMP_FNAME ='"+NandocaToDelete+"'");
st.executeUpdate();
}
catch(Exception e)
{
System.out.println(e);
}
new EmployeePanel();
EmployeePanel.revalidate();
EmployeePanel.repaint();
}
这是来自ActionPerformed方法的代码(当我想在删除DB中的条目后显示所有Employees
if (e.getSource() == ListEmployeesMenuItem) {
cl.show(cardwrapper, "Employee");
EmployeePanel.revalidate();
EmployeePanel.repaint();
}
任何人都有想法,每当ActionPerformed方法被触发时,如何使用更新的信息制作我的JTable?
答案 0 :(得分:2)
不应该操纵视图组件的封闭容器EmployeePanel
。相反,保留JTable
in situ 并更新其TableModel
;监听视图将自行更新。在这个完整的example中,添加行按钮的ActionListener
会调用addRow()
,但您可以根据需要清除现有行并添加新行。假设DefaultTableModel
,请使用setRowCount(0)
清除所有行。