我在Java Desktop程序中使用BeautyEye外观,但是最近发现JMenuBar显示了empy JMenuItems,如下面的屏幕快照所示。

如您所见,菜单区域在那里,但是与Jframe contentPane颜色相同,并且没有菜单文本可见。

一个测试该示例的示例程序(从here下载BeautyEye库)是:

import java.awt.*;
import javax.swing.*;
import org.jb2011.lnf.beautyeye.BeautyEyeLNFHelper;

public class JavaMenuBarExample implements Runnable
{
  private JFrame frame;
  private JMenuBar menuBar;
  private JMenu fileMenu;
  private JMenuItem openMenuItem;

  public static void main(String[] args)
  {
    try
        {
            BeautyEyeLNFHelper.frameBorderStyle = BeautyEyeLNFHelper.FrameBorderStyle.osLookAndFeelDecorated;
            org.jb2011.lnf.beautyeye.BeautyEyeLNFHelper.launchBeautyEyeLNF();
            UIManager.put("RootPane.setupButtonVisible", Boolean.FALSE);
        }
        catch (Exception ex)
        {
            ex.printStackTrace();
        }
    // the proper way to show a jframe (invokeLater)
    SwingUtilities.invokeLater(new JavaMenuBarExample());
  }

  @Override
  public void run()
  {
    frame = new JFrame("Java Menubar Example");
    menuBar = new JMenuBar();
    fileMenu = new JMenu("File");
    openMenuItem = new JMenuItem("Open");
    fileMenu.add(openMenuItem);
    // add menus to menubar
    menuBar.add(fileMenu);
    // put the menubar on the frame
    frame.setJMenuBar(menuBar);

    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setPreferredSize(new Dimension(400, 300));
    frame.pack();
    frame.setVisible(true);
  }
}

最佳答案

我已经调试过使用jdk 1.8_u45,在Windows平台上是正常的。
我猜这可能是Linux平台java1.8_u45的错误。

09-25 20:37