gpt4 book ai didi

java - 为什么 Java 的 Gtk Look And Feel Pop Ups 没有边框?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:19:42 26 4
gpt4 key购买 nike

我有一个已经编写好的 Java Swing 应用程序(因此无需切换 UI 框架),我希望使用 GTKLookAndFeel 至少看起来不错。我已经考虑了 LookAndFeel 之间的字体和组件大小差异等问题,但我无法弄清楚的一件事是为什么我的弹出菜单根本没有边框。看起来他们正在使用看起来不像 GTK native 的 Synth 边界。我希望能够支持 Metal、Windows 和 GTK,但这些弹出窗口看起来很糟糕。这是一个错误吗?在不影响其他看起来不错的 LookAndFeels 边框的情况下,有什么好的(非 hacky)方法可以解决这个问题?

最佳答案

在我看来,GTK LaF 被设计破坏了。对于看似随机的 JCOmponents,它尊重程序员的 UI 设置(字体颜色边框背景等)。这是因为它从 .gtkrc 文件而不是 setXXX(...) 调用中获取设置。我会坚持在 Linux 上使用 Metal,在 Windows 上使用“原生”。

响应:

The GTK+ look and feel can be customized by way of resource files. Swing's GTK+ look and feel uses the following algorithm to locate the resource files:

  1. If the system property swing.gtkthemefile exists, parse it and stop, for example: java -Dswing.gtkthemefile=/tmp/customTheme -jar SwingSet2.jar.
  2. If the file user.home/.gtkrc-2.0 exists, parse it and continue.
  3. Determine the user selected theme name (THEMENAME) by way of the desktop property gnome.net/ThemeName which is determined using XSETTINGS. If this property is null, use Default as THEMENAME. 1. If the file user.home/.themes/THEMENAME/gtk-2.0/gtkrc exists parse it and stop. 2. If the system property swing.gtkthemedir exists and the file swing.gtkthemedir/THEMENAME/gtk-2.0/gtkrc exists, parse it and stop. 3. If the system property swing.gtkthemedir doesn't exist and the file /usr/share/themes/THEMENAME/gtk-2.0/gtkrc exists, parse it and stop. 4. Lastly if swing.gtkthemedir is defined parse swing.gtkthemedir/THEMENAME/gtk/gtkrc, otherwise parse /usr/share/themes/THEMENAME/gtk/gtkrc.

One way GTK+ can be customized is by way of a theme engine. A handful of engines exist. In 1.4.2, Swing supports theme files for Default, pixmap, and bluecurve engines. We are investigating ways to open up the API to allow for the creation of additional GTK engines. Visit http://www.themes.org for examples.
- http://java.sun.com/j2se/1.4.2/docs/guide/swing/1.4/Post1.4.html

我的猜测是 java 正在从另一个 rc 文件中获取其主题,或者不支持当前的边框选项。

关于java - 为什么 Java 的 Gtk Look And Feel Pop Ups 没有边框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1148731/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com