Java BeautyEye 外观为空的 JMenuBar 项目
Java BeautyEye look and feel empty JMenuBar items
我在 Java 桌面程序中使用 BeautyEye 外观,但最近发现 JMenuBar 显示空的 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);
}
}
我是 BeautyEye 项目的作者。
注意几点:
- BeautyEye 已迁移至
GitHub: https://github.com/JackJiang2011/beautyeye, 你可以找到
那里有最新版本。但是我很抱歉,没有英语
介绍。
- 由于JDK版本更新太快,我刚
用 jdk8 做一些测试(并且只针对 Windows),所以我不能保证
暂时在所有平台上完全兼容 jdk8。
- 我认为问题是Java透明API引起的,你可以下载最新的源代码来调试:比如使用系统框架样式但不使用透明框架边框等
您可以通过jb2011 at 163.com
与我联系,希望您能解决这个问题。
我一直在用jdk1.8_u45调试它,在Windows平台是正常的。
我想这可能是 linux 平台 java1.8_u45.
的错误
我在 Java 桌面程序中使用 BeautyEye 外观,但最近发现 JMenuBar 显示空的 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);
}
}
我是 BeautyEye 项目的作者。
注意几点:
- BeautyEye 已迁移至 GitHub: https://github.com/JackJiang2011/beautyeye, 你可以找到 那里有最新版本。但是我很抱歉,没有英语 介绍。
- 由于JDK版本更新太快,我刚 用 jdk8 做一些测试(并且只针对 Windows),所以我不能保证 暂时在所有平台上完全兼容 jdk8。
- 我认为问题是Java透明API引起的,你可以下载最新的源代码来调试:比如使用系统框架样式但不使用透明框架边框等
您可以通过jb2011 at 163.com
与我联系,希望您能解决这个问题。
我一直在用jdk1.8_u45调试它,在Windows平台是正常的。 我想这可能是 linux 平台 java1.8_u45.
的错误