Comment puis-je la force/de commencer à utiliser un GTKLookAndFeel en Java sur KDE?

Tout d'abord, à l'aide de gnome n'est pas une option, mais il est possible d'installer ses bibliothèques).

J'ai besoin de savoir ce qui est nécessaire pour afficher une Java Swing application de bureau à l'aide de l'actuelle installé KDE regard et la sensation de KDE. Idéalement, la solution devrait me permettre d'appliquer un look qui ressemble à du sous-jacent système de fenêtrage (ie: Windows LNF pour Windows, GTK LNF pour Gnome(GTK), QT LNF pour KDE (QT), la valeur par défaut pour les autres plates-formes).

Sous KDE, vous pouvez le configurer pour utiliser le courant de KDE thème pour les applications GTK, trop. Donc, si la solution fonctionne avec GTK c'est très bien.

Quand je lance le morceau de code suivant sous Gnome (Ubuntu 8.04), l'application Java est très beau. Il s'intègre très bien avec le reste des applications:

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

Toutefois, si j'exécute la même chose sous Debian (Lenny) avec KDE, l'UIManager.getSystemLookAndFeelClassName() qui renvoie le Java par défaut.
Si je vais de l'avant et de le forcer à utiliser GTK LNF, l'application ne fonctionne pas. Certains champs sont invisibles, d'autres deviennent hors de l'endroit, tout est inutilisable:

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*/ }

J'ai aussi essayé de mettre le code suivant. Il laisse l'utilisateur choisir n'importe quel un seul de la LNF et puis essaie de la définir. Le métal et le Motif de fonctionner correctement. GTK n'est pas. Le curseur est vraiment foiré. La zone de liste semble laid et disparaît, mais semble fonctionner. Les boutons et les menus semblent ok. Le code est indiqué ici:

(...)
    /** 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());
    }                                     

Ce même système a toutes les applications GTK de travail (par exemple: Firefox) comme prévu. Donc:

1) Quel est manquant à partir de l'environnement de Java GTK LNF demande de travail sous KDE?

2) Quelle est la JVM vérifie le retour de GTK par défaut dans le système de thème?

Merci pour votre aide
Luis Fernando

PS->j'ai essayé d'autres solutions,comme la JGoodies, plaine AWT et SWT. Cependant, le Swing avec GTK LNF serait la meilleure solution pour éviter les tracas de la SWT bibliothèques natives et JGoodies supplémentaire pots (aussi, JGoodies de la LNF n'a pas l'air intégrées Swing GTK sous Gnome). AWT semble hideux (le motif) et qui manque beaucoup de fonctionnalités.

OriginalL'auteur Luis Soeiro | 2008-10-16