* EDIT 2 : Я только что обнаружил, что это проблема compiz + java GUI.По-видимому, это происходит там, где эти два элемента пересекаются.Я использую последнюю версию Ubuntu 11.04 (классический рабочий стол, а не Unity) со всеми обновлениями.Проблема возникает как с Sun Java, так и с OpenJDK.Это связано с использованием плагина Window-Rules Compiz - который мне нужно использовать.
Как указано в комментариях ниже, ранее я проверял, что мои элементы управления добавлены в правильную ветку.Теперь я обнаружил, что отключение плагина Compiz Window-Rules решает мою проблему.Поскольку мне нужно использовать плагин, я ищу решение. *
Оригинальный пост: Я работаю над Java-приложением Swing.Он был построен с NetBeans 6.9.Используется менеджер GridBagLayout.Внешний вид в настоящее время Nimbus (но, похоже, это не влияет на проблему, которую я собираюсь описать).Большинство пользователей запускают приложение в Linux.Некоторые используют Windows.В большинстве случаев приложение работает нормально.Но в случайное время вид откроется без некоторых кнопок графического интерфейса.Например, кнопки «Сохранить» и «Отмена» могут отсутствовать.Другие элементы GUI обычно присутствуют (хотя однажды я услышал, что представление было полностью пустым без элементов GUI - просто пустое серое окно).
Если пользователь закрывает это представление с помощью «X»в верхнем углу и просто снова открывает его, он будет нарисован правильно.Проблема с отсутствующими кнопками происходит менее чем в 1% случаев.Последовательность закрытия / открытия фиксирует это почти 100% времени.(Второе закрытие / повторное открытие, возможно, понадобилось один раз, если я правильно помню.)
Как правило, если некоторые кнопки отсутствуют, другие элементы по-прежнему отображаются правильно.Это не влияет на весь вид (форму).Кажется, это влияет на самую нижнюю панель, но я не уверен, что это действительно повторяемый шаблон.Это очень сложно воспроизвести.Я использую программное обеспечение каждый день, и я вижу это менее одного раза в месяц.Некоторые пользователи видят это чаще, но это все еще редко.
Нет сообщений об ошибках.Я понятия не имею, что попробовать дальше.Такое поведение сохраняется на разных компьютерах, в разных дистрибутивах Linux (хотя все они основаны на Debian) и во многих различных изменениях кода, в том числе при изменении менеджера компоновки.(Ранее мы использовали конструктор графического интерфейса NetBeans.) Есть идеи?
РЕДАКТИРОВАТЬ: 2011.07.05 Вот как в целом выглядит код:
public void show_some_view() {
setTitle(...)
setLayout(new GridBagLayout());
JPanel butnPanel = new JPanel();
butnPanel.setLayout(new GridBagLayout());
try {
//add stuff to panels (butnPanel, etc.)
} catch (Exception e) {
Logger.log(e);
}
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
int[] wh = ApplicationContext.get().getDisplayWidthxHeight();
setSize(wh[0], wh[1]);
setFocusable(true);
setVisible(true);
}