JTable привязка не допускается - PullRequest
2 голосов
/ 05 декабря 2011

У меня есть привязка java.util.List к JTable, если я хочу обновить таблицу, используя

  1. bindingGroup.unbind ();
  2. bindingGroup.bind();

Я получаю это исключение:

Исключение в потоке "Thread-8" java.lang.UnsupportedOperationException: Невозможно вызвать этот метод для управляемой привязки

относительно 2-й строки выше.

Ниже более конкретный код:

    new Thread(
            new Runnable(){
                public void run(){
                    fireProgressBar(true,"working...");
                    controller.doSmoething();
                    fireProgressBar(false,"");   
                    bindingGroup.unbind();
                    bindingGroup.bind();
                    jTable1.revalidate();                        
                }
            }                
            ).start(); 

fireProgressBar - это простой метод, который я написал для активации jProgressBar, здесь ничто не участвует в связывании.

вызов bindingGroup.bind () вызывает исключение, приведенное выше.

Я пытался также использовать SwingUtilities.invokeLater вместо нового Thread (....). Start ();но я получаю ту же проблему.

Спасибо.

1 Ответ

2 голосов
/ 05 декабря 2011

1) этот код всегда выполняется в EDT, в других руках в один момент обновляется в графическом интерфейсе

  • неправильно внутри Runnable#Thread без использования для invokeLater()

  • правильный путь внутрь Runnable#Thread, завернутый в invokeLater()

2) у вас есть два пути

  • посмотрите на SwingWorker и JProgressBars

  • точно так же внутри Runnable#Thread и вывод на GUI должен быть заключен в invokeLater()

3) в тот момент, когда вы сможете управлять целыми пошаговыми процессами внутри фоновых заданий, вы можете реализовать инструменты для Binding

...