- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
首先,使用 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/
问题似乎是 Linux/Ubuntu 的系统外观和感觉,因为它可以在 Windows 和其他外观和感觉中运行。我似乎找不到任何方法来解决这个问题。我目前使用的是 Ubuntu 15.10。 // Se
我遇到一个问题,每当我检查是否支持 GtkLookAndFeel 时,JRE 就会崩溃。令人惊讶的是,这个错误似乎只出现在 Oracle JRE 上。 到目前为止,我已经在三个 JRE 上测试了行为:
我需要一个具有 JLabel 样式的 JTextField(换句话说,我需要一个 JLabel,但我希望能够选择文本)。 JTextField value = new JTextField(value
首先,使用 gnome 不是一个选项(但可以安装它的库)。 我需要知道使用当前安装的 KDE 外观和感觉来显示 Java Swing 桌面应用程序需要什么。理想情况下,该解决方案应该允许我应用看起来像
我们有一个使用 Swing 的 Java 应用程序,但我们正在将其迁移到 JavaFX。因此,我们将旧的 Swing 代码包装到 SwingNode 中,并逐步替换它们。 在迁移之前,Swing 应用
我是一名优秀的程序员,十分优秀!