Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Wartości powtarzające się podczas wypełniania tabeli JTable

Nie używaj JTable#setValue podczas aktualizowania JTable , zamiast tego dodaj nowe wiersze lub zmodyfikuj istniejące wiersze w modelu.

Ponadto nie zwiększasz rowNum wartość, więc zawsze wchodzisz w interakcję z pierwszym wierszem tabeli

Prosty przykład

Prosty przykład wykorzystujący Swing Timer aby dodać nowy wiersz do modelu...

import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.Timer;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
import javax.swing.table.DefaultTableModel;

public class TestTableModel01 {

    public static void main(String[] args) {
        new TestTableModel01();
    }

    public TestTableModel01() {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                try {
                    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
                } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
                }

                final DefaultTableModel model = new DefaultTableModel(new Object[]{"A", "B", "C", "D", "E"}, 0);
                JTable table = new JTable(model);

                JFrame frame = new JFrame("Test");
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.setLayout(new BorderLayout());
                frame.add(new JScrollPane(table));
                frame.pack();
                frame.setLocationRelativeTo(null);
                frame.setVisible(true);

                Timer timer = new Timer(500, new ActionListener() {
                    @Override
                    public void actionPerformed(ActionEvent e) {
                        if (model.getRowCount() < 100) {
                            int row = model.getRowCount();
                            model.addRow(new Object[]{
                                row + "x" + 0,
                                row + "x" + 1,
                                row + "x" + 2,
                                row + "x" + 3,
                                row + "x" + 4
                            });
                        } else {
                            ((Timer)(e.getSource())).stop();
                        }
                    }
                });
                timer.start();
            }
        });
    }
}



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL DB wybiera rekordy z umlautami i bez. np.:'.. gdzie coś =FÖÖ'

  2. Doctrine2 w Symfony2:Jak mogę zobaczyć, które wywołanie obiektu prowadzi do zapytania?

  3. MySQL ORDER BY DESC jest szybki, ale ASC bardzo wolny

  4. DATE_FORMAT w zapytaniu w CodeIgniter przy użyciu Active Record nie działa

  5. Dane wyjściowe Google Form do zdalnej bazy danych MySQL