我遇到了一個非常奇怪的問題,使用JMenuBar在菜單所屬的JFrame的contentPane中的兩個JMenus結果之間導航以重新繪製不正確。內容窗格僅在菜單項下拉和屏幕「髒」的情況下呈現正確的背景 - 其餘全部爲白色。但是,這隻發生在兩個菜單之間瀏覽之後,而不是馬上。在空白contentPane從普通背景顏色改變之間切換需要幾秒鐘的時間。JMenuBar導致內容窗格重新繪製不正確
編輯爲了澄清,這是在Windows 7上使用JDK 1.7.0。
爲了更好地說明我的意思,這裏是啓動(手動調整)之後的窗口:
,然後使用JMenus幾秒鐘後:
下面是一個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);
}
});
}
}
我在XP上看不到使用JDK6_7的任何問題。 – camickr
Mac OS X上沒有工件。內容窗格[不透明度](http://java.sun.com/products/jfc/tsc/articles/painting/index.html#props)的任何機會都未得到尊重? – trashgod
@trashgod我想過不透明,但是設置'setOpaque(true)'對我沒有任何影響,所以我把它從SSCCE中刪除了。我開始懷疑它是否確實是一個特定於平臺的錯誤 - 下一步是讓我在不同的操作系統或JDK上檢查它。 –