zoukankan      html  css  js  c++  java
  • 解决 GTK+/GNOME 3 环境下 Java Swing 程序使用本地 GTK+ 主题时菜单无边框 bug 的方法

    在 GTK+/GNOME 3 环境下采用默认的 Adwaita 主题时,Java Swing 程序如果使用本地 GTK+ 主题会出现菜单无边框的 bug,这个问题也可能在其他常用的 GTK+ 主题中出现。说这是 Java Swing 的 bug 还是 GTK+/GNOME 3 的主题(如 Adwaita)的 bug 其实意义不是太大。这里给出一个简单的解决办法,其思路是修改 GTK+/GNOME 3 的主题,这里以系统默认的 Adwaita 主题为例:

    Adwaita 主题文件位于 /usr/share/themes/Adwaita 目录下,其中包含 gtk-2.0、gtk-3.0、qt 等几个子目录,我们要修改的是 gtk-2.0 子目录中的主题配置文件。进入 /usr/share/themes/Adwaita/gtk-2.0 目录,编辑 main.rc 文件,找到“style "menu" {”这一行(大概是第1520 行),将 xthickness 及 ythickness 设置为:

    xthickness = 1
    ythickness = 1

    然后在下面增加如下内容:

    engine "pixmap" {
        image {
            function = BOX
            file = "assets/line.png"
        }
    }

    上述修改后,style "menu" 部分看起来应该类似下面这样:

    style "menu" {
    
        xthickness = 1
        ythickness = 1
    
        bg[NORMAL]      = @base_color
        bg[INSENSITIVE] = @base_color
        bg[PRELIGHT]    = @base_color
        bg[SELECTED]    = @selected_bg_color
    
        engine "pixmap" {
            image {
                function = BOX
                file = "assets/line.png"
            }
        }
    
    }

    然后再找到“style "separator_menu_item" {”这一行,将其修改为如下内容:

    style "separator_menu_item" {
    
        xthickness = 1
        ythickness = 1
    
        engine "pixmap" {
            image {
              function = BOX
              file = "assets/line.png"
            }
        }
    
    }

    修改完后保存 main.rc,重新启用 Adwaita 主题生效后,就会发现 Java Swing 程序使用 GTK+ 主题后菜单边框终于正常出现啦。对于其他 GTK+/GNOME 3 主题如果出现类似 Adwaita 主题这种情况,也可以采用上述方法来解决。

  • 相关阅读:
    Beautifulsoup模块
    Tronado自定义Form组件
    5分钟入门Tornado
    Django-组件拾遗
    mvc Area(区域)相关技术
    制作web安装程序
    MVC
    Asp.net MVC中repository和service的区别
    关于ASP.NET MVC+Repository+Service架构的一些思考
    MVC引入SERVICE层 提高代码重用性 沟通CONTROL和MODEL
  • 原文地址:https://www.cnblogs.com/cyberniuniu/p/5931221.html
Copyright © 2011-2022 走看看