我正在NetBeans开展一个关于小餐馆的项目。
我有2个Jtables,我绑定到我的数据库,有2个表单用于插入数据。第一个表是插入员工数据,第二个表是插入项目详细信息。
我希望每次插入时刷新表中的记录。因此,我创建了2个刷新方法,传递(List l)作为参数,并从生成的代码中复制并粘贴绑定代码并传递l绑定。
但它不起作用。为什么? 还有其他方法可以刷新该表的数据吗?
这是我的刷新表
private void refreshItm(List l){
jTableBinding = org.jdesktop.swingbinding.SwingBindings.createJTableBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, itemsList, jTable2);
columnBinding = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${itemid}"));
columnBinding.setColumnName("Itemid");
columnBinding.setColumnClass(Integer.class);
columnBinding = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${itemname}"));
columnBinding.setColumnName("Itemname");
columnBinding.setColumnClass(String.class);
columnBinding = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${availablequantity}"));
columnBinding.setColumnName("Availablequantity");
columnBinding.setColumnClass(Short.class);
columnBinding = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${price}"));
columnBinding.setColumnName("Price");
columnBinding.setColumnClass(Integer.class);
bindingGroup.addBinding(jTableBinding);
jTableBinding.bind();
}
private void refreshEmp(List l){
org.jdesktop.swingbinding.JTableBinding jTableBinding = org.jdesktop.swingbinding.SwingBindings.createJTableBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, l, jTable1);
org.jdesktop.swingbinding.JTableBinding.ColumnBinding columnBinding = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${empid}"));
columnBinding.setColumnName("Empid");
columnBinding.setColumnClass(String.class);
columnBinding = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${empname}"));
columnBinding.setColumnName("Empname");
columnBinding.setColumnClass(String.class);
columnBinding = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${address}"));
columnBinding.setColumnName("Address");
columnBinding.setColumnClass(String.class);
bindingGroup.addBinding(jTableBinding);
jTableBinding.bind();
}
答案 0 :(得分:0)
您忘记更新结果列表(即在您的第一个方法“itemsList”中)。寻找“initComponents”方法。在这个方法中应该有一行来获取“itemsList”,如:
itemsList = java.beans.Beans.isDesignTime() ? java.util.Collections.emptyList() : itemsQuery.getResultList();
将该行复制到方法的第一行。
答案 1 :(得分:0)
由于user1545636建议你错过了重新加载itemsList。 现在,我希望与您分享一个更好的代码设计,以便在JPA插入/更新/删除操作发生后刷新jTable:
在Netbeans中,跳转到设计标签,右键单击您的jtable并点击“自定义代码......”
从“组件”下拉列表中选择itemsList并选择下方列表中的“自定义创建”。
现在从
更改itemsList inizializationitemsList = java.beans.Beans.isDesignTime() ? java.util.Collections.emptyList() : itemsQuery.getResultList();
到
itemsList = java.beans.Beans.isDesignTime() ? java.util.Collections.emptyList() : org.jdesktop.observablecollections.ObservableCollections.observableList(itemsQuery.getResultList());
通过这种方式,您可以观察itemsList对象。 现在在你的refreshItm方法中只写这段代码:
itemsList.clear();
itemsList.addAll( itemsQuery.getResultList());
在JPA插入/更新/删除后调用该方法,jTable会像魅力一样自动刷新!
我希望你喜欢这个解决方案