Java 菜单项分隔符在GNOME环境下不可见(使用“GTK”LAF时)
我有一个Java桌面应用程序(文档编辑器),最近我在其中添加了一个菜单栏,菜单中依次包含菜单项。问题是——在我的GNOME桌面环境(Ubuntu)中,菜单项分隔符根本不可见。如果我将应用程序L&F切换到默认Java(metal)LaF或在Ubuntu上切换桌面环境KDE环境,它们是可见的,但在GNOME环境下,菜单项分隔符永远不可见。我还将应用程序L&F设置为“GTK”。如果我强制L&F“motif”,文件分隔符就会清晰可见 以前有没有人在Ubuntu GNOME环境中遇到过这种问题?我附上下面的代码-这是直截了当的,不认为这里有任何问题Java 菜单项分隔符在GNOME环境下不可见(使用“GTK”LAF时),java,swing,gtk,gnome,Java,Swing,Gtk,Gnome,我有一个Java桌面应用程序(文档编辑器),最近我在其中添加了一个菜单栏,菜单中依次包含菜单项。问题是——在我的GNOME桌面环境(Ubuntu)中,菜单项分隔符根本不可见。如果我将应用程序L&F切换到默认Java(metal)LaF或在Ubuntu上切换桌面环境KDE环境,它们是可见的,但在GNOME环境下,菜单项分隔符永远不可见。我还将应用程序L&F设置为“GTK”。如果我强制L&F“motif”,文件分隔符就会清晰可见 以前有没有人在Ubuntu GNOME环境中遇到过这种问题?我附上下面
import java.awt.EventQueue;
import java.lang.reflect.InvocationTargetException;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
public class Test {
static JFrame frame = null;
static JMenuBar menubar = null;
static JMenu filemenu = null;
public static void main (String[] args) throws InterruptedException,
InvocationTargetException {
EventQueue.invokeAndWait(new Runnable () {
@Override
public void run() {
createAndShowGUI ();
}
});
}
private static void createAndShowGUI () {
/* Set LAF to GTK LAF */
try {
UIManager.setLookAndFeel("com.sun.java.swing.plaf.gtk.GTKLookAndFeel");
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (UnsupportedLookAndFeelException e) {
e.printStackTrace();
}
/* Create frame */
frame = new JFrame ();
frame.setLocation(50, 50);
frame.setSize(400, 600);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
/* Add menu bar */
addMenuBar ();
}
private static void addMenuBar () {
/* Create menu bar and then file menu*/
menubar = new JMenuBar ();
filemenu = new JMenu ("File");
/* Add three menu items to the file menu */
JMenuItem newItem = new JMenuItem ("New ");
JMenuItem openItem = new JMenuItem ("Open ");
JMenuItem exitItem = new JMenuItem ("Exit ");
/* Add the menu items to the file menu. Also separate the last item
* from the first two using a menu item separator */
filemenu.add(newItem);
filemenu.add(openItem);
filemenu.addSeparator();
filemenu.add(exitItem);
/* Add the file menu to the menu bar */
menubar.add(filemenu);
/* Add menu bar to frame */
frame.setJMenuBar(menubar);
}
}
所以问题是-当在GNOME环境中使用“GTK”L&F时,我是否需要添加更多的定制,以便菜单项分隔符再次可见
[编辑:文章现在已被编辑以反映sscce。如果您想看到Java LAF的效果,请注释createAndShowGUI()中LAF硬编码为GTK LAF的行。Java LAF的问题消失了,但在使用GTK LAF时仍然存在]请提供一个显示您描述的问题的示例。更新代码以包含一个小sscce。我看到得到了相同的结果;我想知道这是否是一个有意的UI决定,或者GTK+是否打算在中使用。也许gnome认为分隔符是图标默认情况下,gnome不显示菜单图标,您应该打开它。使用dconf编辑器(如果没有,请安装dconf工具)进入org.gnome.desktop.interface并打开菜单具有图标默认情况下,gnome不显示菜单图标,您应该打开它。使用dconf编辑器(如果您没有,请安装dconf工具)进入org.gnome.desktop.interface并打开菜单和图标