Java 菜单项分隔符在GNOME环境下不可见(使用“GTK”LAF时)

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环境中遇到过这种问题?我附上下面

我有一个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并打开菜单和图标