У меня есть несколько флажков и переключателей, которые позволяют пользователю отфильтровывать элементы в JTable
. Каждый из событий должен быть пронизан, чтобы избежать зависания графического интерфейса.
Я бы хотел поставить в очередь события и действовать в том порядке, в котором они были получены.
В настоящее время у меня есть следующий дизайн, но я думаю, что должен быть лучший способ. По сути, у меня есть для каждого потенциального метода в очереди, целое число, которое отображается на него. Это целочисленное значение добавляется в список при каждом выполнении метода actionPerformed
целых чисел, которые циклически повторяются и преобразуются в вызовы функций.
Возможно, я думал об использовании EventQueue для вызова run на нем. Каков наилучший шаблон или техника для этого типа функциональности?
Vector<Integer> taskQueue;
/**
* Adds tasks to a queue things are completed in the order they were added. This allows for
* threading and concurrency issues.One task is done at a time.
* @param
*/
private void doTasks()
{
if(!queueIsRunning)
{
doTasks = new Thread(){
public void run()
{
queueIsRunning = true;
while(!taskQueue.isEmpty())
{
intVal = taskQueue.get(0);
taskQueue.remove(0);
switch(intVal)
{
case DOM_HIGHLIGH_TASK:
System.out.println("starting dom highlight");
highlightDom();
break;
case FLASH_HIGHLIGH_TASK:
System.out.println("starting flash highlight");
higlightFlash();
break;
case SQL_HIGHLIGH_TASK:
System.out.println("starting sql highlight");
highlightSQL();
break;
case INFO_HIGHLIGH_TASK:
System.out.println("starting infoleak highlight");
highlightInfoLeak();
break;
case HTMLCOM_HIGHLIGH_TASK:
System.out.println("starting htmlcomm highlight");
highlightHtmlComments();
break;
case SORT_EXTENSIONS:
sortExtensions();
}
}
queueIsRunning = false;
}
};
doTasks.start();
}
}