JTable aktualisieren

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • JTable aktualisieren

    Hallo

    Ich versuche Daten aus einer DB herauszulesen und direkt in eine JTable zu schreiben. Alle 2 Sekunden wird geschaut, ob neue Daten in der Tabelle sind. Wenn ja, sollen dieses aktualisiert werden. Wenn ich das Progi startet, werden alle Daten korrekt herausgelesen und dann auch geschrieben. Das Update funktioniert aber nicht. Keine Ahunung warum.
    In der Start Methode wird, sobald eine Änderung gemacht wird und es nicht die erste Runde ist, die Methode TabelleUpdate() aufgerufen. Jedoch macht diese Methode keine richtiges Update. Was muss ich da ändern?

    Quellcode

    1. public class GUI extends JFrame implements ActionListener{
    2. private JFrame frame = new JFrame();
    3. private Vector vTitel;
    4. private Vector vDaten;
    5. private JTable table;
    6. private Abfrage myAbfrage;
    7. private boolean isrunning = false;
    8. private int runde = 0;
    9. private int aufruf = 0;
    10. private DefaultTableModel defaultTableModel;
    11. //Titel für JTable
    12. public final static Vector COLUMN_IDENTIFIERS = new Vector(){
    13. {
    14. add("Id");
    15. add("Datum");
    16. add("Level");
    17. add("Classname");
    18. add("Message");
    19. }
    20. };
    21. /** Creates a new instance of GUI */
    22. public GUI() {
    23. Vector vDaten = new Vector();
    24. Vector vTitel = new Vector();
    25. Vector vtemp = new Vector();
    26. }
    27. public static void main(String[] args)
    28. {
    29. }
    30. public void start()
    31. {
    32. myAbfrage = new Abfrage();
    33. isrunning = true;
    34. myAbfrage.DBConnectionOpen();
    35. while (isrunning == true){
    36. //System.out.println("Runde "+ rundenzaehler);
    37. try{
    38. if(runde == 0){
    39. this.TabelleErzeugen(myAbfrage.DBAbfrageMessages());
    40. this.initGUI();
    41. runde++;
    42. }
    43. //Wenn eine Änderung gemacht wird, wird die Methode TabelleUpdate aufgerufen.
    44. if(myAbfrage.DBAbfrageStatus() == 1){
    45. System.out.println("In Schleife");
    46. System.out.println("In Schleife mit Runde");
    47. this.TabelleUpdate(myAbfrage.DBAbfrageMessages());
    48. runde++;
    49. }
    50. Thread.sleep(2000);
    51. }
    52. catch (InterruptedException e) {
    53. e.getMessage();
    54. }
    55. }
    56. myAbfrage.DBConnectionClose();
    57. }
    58. public void TabelleErzeugen(Vector vDaten)
    59. {
    60. defaultTableModel = new DefaultTableModel(1, 5);
    61. defaultTableModel.setColumnIdentifiers(COLUMN_IDENTIFIERS);
    62. table = new JTable(vDaten, COLUMN_IDENTIFIERS);
    63. }
    64. public void TabelleUpdate(Vector vDaten)
    65. {
    66. Iterator it = vDaten.iterator();
    67. while (it.hasNext()){
    68. System.out.println(it.next());
    69. }
    70. defaultTableModel.setDataVector(vDaten, COLUMN_IDENTIFIERS);
    71. defaultTableModel.fireTableDataChanged();
    72. }
    73. public void initGUI()
    74. {
    75. // Das JTable initialisieren
    76. frame = new JFrame("Viewer");
    77. frame.setBounds(10,10,800,600);
    78. frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    79. frame.setLayout(new BorderLayout());
    80. frame.add(new JScrollPane(table), "Center");
    81. frame.pack();
    82. frame.setVisible(true);
    83. }
    84. public void actionPerformed(ActionEvent e)
    85. {
    86. }
    87. }
    Alles anzeigen