簡體   English   中英

如何刷新綁定的jTable?

[英]How to refresh bound jTable?

我有jTable與MySQL表綁定。 這樣添加新行:

    Student student=new Student(3, "Name", "Last name");
    entityManager.getTransaction().begin();
    entityManager.persist(student);
    entityManager.getTransaction().commit();

但是我無法刷新jTable ,我也不知道該怎么做,有人可以幫助我嗎? 我嘗試調用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>

使用綁定和AutoUpdater之后,您需要做的就是將新對象添加到綁定集合中。

studentsList.add(student);

初始化集合studentsList時,請確保使用ObservableCollections.observableList()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM