JMenuBar导致内容窗格错误地重绘

时间:2011-11-26 19:02:29

标签: java swing

我在使用JMenuBar时遇到了一个非常奇怪的问题,在两个JMenus之间导航导致菜单所属的JFrame的contentPane错误地重绘。内容窗格仅显示正确的背景,其中菜单项下拉并“屏蔽”屏幕 - 其余部分全部为白色。但是,这仅在两个菜单之间浏览后才会发生,而不是立即发生。对于空的contentPane而言,需要几秒钟的时间来切换普通的背景颜色。

编辑为了澄清,这是在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 个答案:

答案 0 :(得分:1)

它必须是特定于平台的东西。 GUI在我的机器上显得很好:Ubuntu 11.10,Eclipse 3.7,Sun JDK 7。