[英]How to refresh bound jTable?
I have jTable
bound with MySQL table. 我有
jTable
与MySQL表绑定。 This way a add new row: 这样添加新行:
Student student=new Student(3, "Name", "Last name");
entityManager.getTransaction().begin();
entityManager.persist(student);
entityManager.getTransaction().commit();
But I can't refresh jTable
, and I don't know how to do this, could anybody help me? 但是我无法刷新
jTable
,我也不知道该怎么做,有人可以帮助我吗? I tried to invoke jTable1.updateUI()
, jTable1.repaint()
, but it doesn't work for me, I see changes only after application restart. 我尝试调用
jTable1.updateUI()
, jTable1.repaint()
,但是它对我不起作用,我只能在应用程序重新启动后才能看到更改。
private void initComponents() {
bindingGroup = new org.jdesktop.beansbinding.BindingGroup();
entityManager = java.beans.Beans.isDesignTime() ? null : javax.persistence.Persistence.createEntityManagerFactory("multitimer?zeroDateTimeBehavior=convertToNullPU").createEntityManager();
StudentsQuery = java.beans.Beans.isDesignTime() ? null : entityManager.createQuery("SELECT c FROM Students c");
StudentsList = java.beans.Beans.isDesignTime() ? java.util.Collections.emptyList() : StudentsQuery.getResultList();
jScrollPane1 = new javax.swing.JScrollPane();
jTable1 = new javax.swing.JTable();
jButton1 = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
org.jdesktop.swingbinding.JTableBinding jTableBinding = org.jdesktop.swingbinding.SwingBindings.createJTableBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, StudentsList, jTable1);
org.jdesktop.swingbinding.JTableBinding.ColumnBinding columnBinding = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${id}"));
columnBinding.setColumnName("Id");
columnBinding.setColumnClass(Integer.class);
columnBinding = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${descr}"));
columnBinding.setColumnName("Descr");
columnBinding.setColumnClass(String.class);
columnBinding = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${guid}"));
columnBinding.setColumnName("Guid");
columnBinding.setColumnClass(String.class);
bindingGroup.addBinding(jTableBinding);
jScrollPane1.setViewportView(jTable1);
jButton1.setText("jButton1");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 400, Short.MAX_VALUE)
.addGroup(layout.createSequentialGroup()
.addComponent(jButton1)
.addGap(0, 0, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addComponent(jButton1)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 275, javax.swing.GroupLayout.PREFERRED_SIZE))
);
bindingGroup.bind();
pack();
}// </editor-fold>
With the binding and AutoUpdater in place all you should have to do is adding the new object to the bound collection. 使用绑定和AutoUpdater之后,您需要做的就是将新对象添加到绑定集合中。
studentsList.add(student);
Make sure you use ObservableCollections.observableList()
when initializing the collection studentsList
. 初始化集合
studentsList
时,请确保使用ObservableCollections.observableList()
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.