Одна из самых больших проблем, которую я вижу, это то, что вы не привязываете таблицу к своим данным, а затем обновляете ячейки по мере их изменения, вы меняете всю модель данных из-под таблицы каждый раз, когда нажимаете клавишу.
Я бы рискнул предположить, что у вас "расовое" состояние. Вы нажимаете клавишу, и это начинает процесс перестройки вашего стола и его модели. Пройдя через эту перестройку (помните, что Swing использует потоки, поэтому обновление таблицы все еще происходит , пока вы печатаете,) вы запускаете и запускаете другую перестройку, которая меняет модель из-под первого обновления который все еще работает . Конечно, не видя весь ваш код, я не могу быть в этом уверен, но могу предложить несколько вещей, которые сделают вещи чище и менее подверженными проблемам параллелизма.
Вместо того, чтобы писать код, который берет данные вашей модели и переводит их в простую модель таблицы при каждом нажатии клавиши, вы можете создать свой собственный класс модели таблицы и реализовать его для непосредственного просмотра вашей модели. Таким образом, у вас не будет проблемы повторной передачи данных между вашей моделью и массивом.
Чтобы создать собственную модель таблицы, вы можете просто расширить ее из AbstractTableModel (http://download.oracle.com/javase/6/docs/api/javax/swing/table/AbstractTableModel.html). В оригинальном Java Tutorial есть отличный пример (http://download.oracle.com/javase/tutorial/uiswing/components/table.html#data), если вы не знаете, как это сделать. Самым важным для вас является метод getValueAt, который берет строку и столбец и возвращает значение, которое должна содержать эта ячейка. Именно туда вы хотите поместить код, который просматривает ваш объект «Порядок» и выдает желаемый результат.
Когда у вас есть свой пользовательский объект TableModel, просто передайте его новый экземпляр в метод "setModel" таблицы при первой его инициализации.
Как только это будет сделано, вы захотите обработать разумные обновления модели. Чтобы обновить все данные в таблице, вы можете вызвать событие «fireTableDataChanged». Кроме того, вы можете обновлять только те части таблицы, которые нужно изменить, а не все время. Вместо того, чтобы вдаваться в мелкие детали здесь, я просто укажу вам на отличную страницу Учебника Java, посвященную именно этому: http://download.oracle.com/javase/tutorial/uiswing/components/table.html#fire