JMenuBar вызывает неправильную перерисовку панели содержимого - PullRequest
2 голосов
/ 26 ноября 2011

Я столкнулся с очень странной проблемой, связанной с использованием JMenuBar, при которой перемещение между двумя JMenus приводит к некорректному перерисовыванию области содержимого JFrame, которой принадлежит меню.Панель содержимого представляет правильный фон только там, где пункты меню выпадают и «пачкают» экран - остальное полностью белое.Однако это происходит только после просмотра между двумя меню, а не сразу.Требуется несколько секунд переключения между пустой областью содержимого, чтобы изменить цвет обычного фона.

РЕДАКТИРОВАТЬ Для пояснения, это в Windows 7 с использованием JDK 1.7.0.

Чтобы лучше проиллюстрировать, что я имею в виду, вот окно после запуска (изменено вручную): The window upon launch

И затем после использования JMenus в течение нескольких секунд: The content pane is now incorrectly painted

Ниже SSCCE , демонстрирующий проблемный код.

package com.test.workspace;

import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.SwingUtilities;

public class MenuBarTest extends JFrame {

    /**
     * Eclipse-generated SUID.
     */
    private static final long serialVersionUID = 8836700685077107497L;

    public MenuBarTest() {
        JMenuBar menuBar = new JMenuBar();

        JMenu testMenu = new JMenu("Test");
        JMenuItem testItem = new JMenuItem("TestItem");

        JMenu breakMenu = new JMenu("Break");
        JMenuItem breakItem = new JMenuItem("BreakItem");

        testMenu.add(testItem);

        breakMenu.add(breakItem);

        menuBar.add(testMenu);
        menuBar.add(breakMenu);

        this.setJMenuBar(menuBar);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                MenuBarTest test = new MenuBarTest();
                test.setDefaultCloseOperation(EXIT_ON_CLOSE);
                test.pack();
                test.setVisible(true);
            }           
        });
    }
}

1 Ответ

1 голос
/ 27 ноября 2011

Это должна быть вещь для платформы Графический интерфейс на моем компьютере работал нормально: Ubuntu 11.10, Eclipse 3.7, Sun JDK 7.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...