gpt4 book ai didi

java - 我如何在 KDE 的 Java 中强制/开始使用 GTKLookAndFeel?

转载 作者:搜寻专家 更新时间:2023-11-01 03:15:08 25 4
gpt4 key购买 nike

首先,使用 gnome 不是一个选项(但可以安装它的库)。

我需要知道使用当前安装的 KDE 外观和感觉来显示 Java Swing 桌面应用程序需要什么。理想情况下,该解决方案应该允许我应用看起来像底层窗口系统的外观(即:Windows LNF for Windows,GTK LNF for Gnome(GTK),QT LNF for KDE(QT),其他平台的默认系统).

在 KDE 下,您也可以将其配置为对 GTK 应用程序使用当前的 KDE 主题。因此,如果该解决方案适用于 GTK,那就没问题。

当我在 Gnome (Ubuntu 8.04) 下运行以下代码时,Java 应用程序看起来很漂亮。它与其他应用程序集成得很好:

try {
// Set System L&F
UIManager.setLookAndFeel(
UIManager.getSystemLookAndFeelClassName());
} catch(Exception e) { //Handle it }

但是,如果我在 Debian (Lenny) 和 KDE 下运行同样的东西,UIManager.getSystemLookAndFeelClassName() 调用返回 Java 默认值。如果我继续并强制它使用 GTK LNF,应用程序将无法运行。有些字段是不可见的,有些变得不合适,一切都无法使用:

try {
//Force the GTK LNF on top of KDE, but **it doesn't work**
UIManager.setLookAndFeel("com.sun.java.swing.plaf.gtk.GTKLookAndFeel");
} catch (Exception e) { /*Handle it*/ }

我还尝试输入以下代码。它让用户选择任何一个可用的 LNF,然后尝试设置它。金属和图案工作正常。 GTK 没有。 slider 真的搞砸了。列表框看起来很难看并消失了,但似乎有效。按钮和菜单看起来不错。相关代码如下:

(...)
/** Creates new form SwingFrame */
public SwingFrame() {

initComponents();

//Save all available lafs in a combobox
cbLafs.removeAllItems();
UIManager.LookAndFeelInfo[] lafs=UIManager.getInstalledLookAndFeels();

for (int i=0,t=lafs.length;i<t;i++)
{
cbLafs.addItem(lafs[i]);
System.out.println(lafs[i].getName());
}

}

public void changeLookAndFeel(String laf)
{
//If not specified, get the default one
if (laf==null) {
laf=UIManager.getSystemLookAndFeelClassName();
}

try {
// Set System L&F
UIManager.setLookAndFeel(laf);
}
catch (Exception e) {
// handle exception
e.printStackTrace();
}
SwingUtilities.updateComponentTreeUI(this);

}

private void cbLafsActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
UIManager.LookAndFeelInfo laf=(UIManager.LookAndFeelInfo)cbLafs.getSelectedItem();
if (laf==null)
changeLookAndFeel(null);
else
changeLookAndFeel(laf.getClassName());
}

同一个系统的所有 GTK 应用程序(例如:Firefox)都按预期运行。所以:

1) 让 Java GTK LNF 应用程序在 KDE 下运行的环境缺少什么?

2) JVM 检查什么以返回 GTK 作为默认系统主题?

谢谢你的帮助路易斯费尔南多

PS->我也尝试过其他解决方案,例如 JGoodies、普通 AWT 和 SWT。然而,带有 GTK LNF 的 Swing 将是避免 SWT native 库和 JGoodies 额外 jar 麻烦的最佳解决方案(此外,JGoodies LNF 看起来不像 Gnome 下的 Swing GTK 那样集成)。 AWT 看起来很丑陋(类似 motif)并且缺少很多功能。

最佳答案

您可以从命令行设置外观:

java -Dswing.defaultlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel MyApp

此外,SwingSet2.jnlp提供了所有可以更改的不同内容的示例演示。来源和其他信息可以在这里找到:link text

关于java - 我如何在 KDE 的 Java 中强制/开始使用 GTKLookAndFeel?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/209731/

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