Automatyczna aktualizacji tabeli

0

Witam

Mam drobny problem techniczny związany z klasa Schedule oraz z mechanizmem aktualizacji wybranego wiersza oraz komórki w tabeli.

Na obecną chwile schemat ma byc taki iż tabeli ma przykładowe wpisy i za pomocą Schedula automatycznie co 5 sek ma robić update np 1 kom 1 wiersz tabeli, ale z jakieś przyczyny tego nie robi.
Testowałem różne scenariusze. Samo drukowanie w konsoli napisu czasowo działa. Wyłączając Schedule z pod przycisku robi to bez problemu więc tak myślę może kwestia dołączyć do obiektu opcje zdarzenia (actionListener).

CODE:

package update_data_in_rows_and_cells_testing;

import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.border.EmptyBorder;
import javax.swing.table.DefaultTableModel;

import update_data_in_rows_and_cells_testing.TaskToExecute;

public class PopulateTableRecordsundUpdate extends JFrame{

JPanel contentPane;
JTable tab;
public JTextField field;
public JTextField textField;
public JTextField textField_1;
public JTextField textField_2;
public JButton update;
public DefaultTableModel model2 = new DefaultTableModel();  

//Wyswietlenie tabeli oraz wyplenienie danymi
public void populateTable() 
{
	setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	setBounds(100, 100, 450, 300);
	contentPane = new JPanel();
	contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
	//contentPane.setLayout(new BorderLayout(0, 0));
	setContentPane(contentPane);
	
	
	//Tworzenie komorek tabeli
	DefaultTableModel dm = new DefaultTableModel();
	dm.addColumn("Name");
	dm.addColumn("Surname");
	dm.addColumn("Age");
	dm.addColumn("Nation");
	
	JTable tab = new JTable(dm);
	tab.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
	contentPane.add(tab);
	
	JScrollPane scroll = new JScrollPane(tab);
	scroll.setPreferredSize(new Dimension(320,120));
	contentPane.add(scroll);
	
	//Wypelnienie komorek tabeli danymi
	String[] name = {"William","Defoe","50","American"};
	dm.addRow(name);
	
	String[] name2 = {"George","Cloney","40","American"};
	dm.addRow(name2);
	
	String[] name3 = {"Javier","Bardem","45","Spain"};
	dm.addRow(name3);
	
	String[] name4 = {"Axel","Stein","35","German"};
	dm.addRow(name4);
	
	/*
	update = new JButton("Update");
	contentPane.add(update);
	update.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e)
			{
				model2 = (DefaultTableModel)tab.getModel();
				String updateVal = "Record1";
				model2.setValueAt(updateVal, 0, 0);
			}
	});*/
	

}

public static void main(String[] args){
	
	PopulateTableRecordsundUpdate populate = new PopulateTableRecordsundUpdate();
	populate.populateTable();
	populate.setVisible(true);
	
	//Aktualizaja rekordow w tabeli
	ScheduledExecutorService scheduled = Executors.newScheduledThreadPool(1);
	
	TaskToExecute task = new TaskToExecute();
	scheduled.scheduleAtFixedRate(task, 0, 5, TimeUnit.SECONDS);
}

}

class TaskToExecute extends PopulateTableRecordsundUpdate implements Runnable{

public void run()
{ 
	
	
	model2 = (DefaultTableModel)tab.getModel();
	String updateVal = "Record1";
	//String updateVal = model2.getValueAt(0, 0).toString();
	
	//System.out.print("Akcja wykonywana czasowo");
	model2.setValueAt(updateVal, 0, 0);
	
	/*
	int col = 0;
	int row = 0;
	
	for(int count = 0 ; count < table.getColumnCount(); count++) {
		
		model2.setValueAt(updateVal, row, col);
		model2.setValueAt(updateVal2, row, col+1);
		model2.setValueAt(updateVal3, row, col+2);
		model2.setValueAt(updateVal4, row, col+3);
		row++;
	}*/
}

}

Mam nadzieje, że jest to zrozumiałe poprzez dodatkowe komentarze.

0
public static void main(String[] args){

    PopulateTableRecordsundUpdate populate = new PopulateTableRecordsundUpdate(); // <- ten obiekt wyświetlasz
    populate.populateTable();
    populate.setVisible(true);

    //Aktualizaja rekordow w tabeli
    ScheduledExecutorService scheduled = Executors.newScheduledThreadPool(1);

    TaskToExecute task = new TaskToExecute(); // <- ten obiekt aktualizujesz
    scheduled.scheduleAtFixedRate(task, 0, 5, TimeUnit.SECONDS);
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1