ОБНОВЛЕНИЕ - 21.09.2011
Я сделал начальный краткий обзор кода и везде, где он выглядит, как будто он обновляет пользовательский интерфейс, он делает это через:
SwingUtilities.invokeLater(new Runnable() {
public void run() {
// code goes here
}
});
Основные обновления пользовательского интерфейса происходят в одном месте, которое сначала выполняет описанную выше оболочку, а затем просит текущую видимую панель обновить себя в этом потоке, поэтому должно находиться в EDT.Если я правильно понимаю?
Тем не менее, могут быть странные места, которые я пропустил.В настоящее время я работаю с некоторыми кодами AspectJ, которые я нашел здесь:
http://weblogs.java.net/blog/alexfromsun/archive/2006/02/debugging_swing.html
, чтобы увидеть, будет ли это выделять какие-то странные места, где он не работает правильно.
Кроме этого, есть еще какие-нибудь мысли?
Re: предположения о прозрачности - как это проявится?Что я ищу?Хотя я проделал большую работу по улучшению кода, он в значительной степени унаследован от предыдущих людей, поэтому я не настолько знаком с ним, как это может быть полезно:)
Re: вставка фрагментов кода - I 'Я бы хотел, но, не сужая проблему, я не могу придумать разумный ограниченный фрагмент для публикации, я, к сожалению, буквально понятия не имею, где проблема может заключаться в коде.
Спасибо за все ответы, таким образомдалеко.
ОРИГИНАЛЬНЫЙ ВОПРОС
У нас есть приложение, которое размещено внутри сторонней системы.Нашей частью является JPanel, который возвращается, и хост-приложение (Lagan CRM) затем встраивает эту Panel в свое приложение.
В большинстве случаев это работает очень хорошо, но иногда, и только в одной реализации, которую мызнать, что панель не обновляется правильно - это как будто что-то остановило часть панели от обновления.
На скриншотах ниже, наш JPanel находится справа внизу, верхний левый от него по существукнопка «INFO».
Вот несколько скриншотов, демонстрирующих проблему:
В этом примере проблема видна в области кнопок «Перейти к недоступному» и «Набрать номер».
В этом примере проблема находится в той же общей области, но это не те же измерения, на самом деле мы не нашли какой-либо общности в отношении области / размерааномалии.
В этом примере я немного больше общался с пользователем, и похоже, что то, что произошло с пользователем до текущего вызова, показывало кнопку «GO UNAVAILABLE».Затем они начали разговор с вызывающим абонентом, что означает, что система должна начать показывать «ПОДКЛЮЧИТЬ» вверху слева, номер телефона ниже, а справа - кнопку HANGUP.Как вы можете видеть, он обновляется только снаружи, в средней части есть большой блок, который вообще не обновлялся и по-прежнему действует так, как будто они не находятся на вызове.Помимо того, что выглядит уродливо, это вызывает проблемы, потому что есть две или три кнопки, которые должны заменить «GO UNAVAILABLE» одну, и это означает, что функциональность недоступна.
Я просто хотел показать несколько примеров, чтобы вы могли видеть, что они каждый раз разные блоки, но основная проблема всегда одна и та же.
Некоторые базовые характеристики:
Это происходит только на машинах с XP.
Это происходит только на одном клиентском сайте из примерно 10-15 сайтов, которые его используют, но происходит на всехмашины на этом сайте.
Я спрашивал о том, что окна появляются сверху, но единственное, о котором они знают, прислали мне скриншот, и он не сильно пересекается, конечно, ничто не похоже на эти шаблоны.
Java 1.5 используется на этом сайте, обновление 100+ рабочих станций до 1.6 не является невозможным, но мне нужно иметь разумное указание, что этособираюсь помочь.
У нас есть много других сайтов на 1.5 без этой проблемы.
Мы спросили о том, какое другое программное обеспечение может работать на машинах, и, честно говоря, их очень мало, поскольку они являются рабочими станциями агентов контакт-центра и плотно закреплены.
Панель исправится после того, как абонент повесит трубку, но это означает, что агент фактически теряет этот вызов, поскольку он ничего не может с ним сделать. Для меня это означает, что он по сути блокируется от обновления, а не постоянно блокируется.
Панель реализована в SWING, ничего особенного там нет.
Любые советы, советы, рекомендации, предложения по другим вопросам, на которые я могу получить ответы - или, что еще лучше, решения :) были бы очень благодарны.