菜单项分隔符在GNOME环境下不可见(使用" GTK +#34; LAF)

时间:2011-12-23 23:31:03

标签: java swing gtk gnome

我有一个Java桌面应用程序(文档编辑器),我最近添加了一个菜单栏,其菜单又包含菜单项。问题是 - 在我的GNOME桌面环境(Ubuntu)中,菜单项分隔符根本不可见。如果我将应用程序L& F切换到默认Java(金属)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时仍然存在]

0 个答案:

没有答案