Page 1 sur 1

[Java VM] Interface, boutons, etc. (en cours)

Publié : lun. 17 janv. 2011, 09:36
par Siriru
Hello !

Je n'arrive pas à améliorer le style de mes interfaces d'applications écrites en Java. Sous windows ou macOS, c'est plutôt joli, mais sous linux, p.ex. les boutons sont rectangulaires et moches : comment y remédier, y a t'il possibilité d'appliquer des thèmes ou quelque chose à configurer ?

Merci !

Re: [Java VM] Interface, boutons, etc. (en cours)

Publié : lun. 17 janv. 2011, 10:26
par FoolEcho
:rtfm: (j'vois pas comment on peut faire du Java autrement :mrgreen: )

Vois du côté de:
http://download.oracle.com/javase/tutor ... /plaf.html
http://download.oracle.com/javase/6/doc ... nager.html

Re: [Java VM] Interface, boutons, etc. (en cours)

Publié : lun. 17 janv. 2011, 11:17
par benjarobin
@FoolEcho Je ne pense pas que tu ai saisi l’ampleur de la mocheté. Un screen serai le bienvenue bien sure. Cela m'était déjà arrivé il y a fort longtemps sous Ubuntu de mémoire, et j'avais su résoudre le problème par une histoire de variable d’environnement ou autre :( Je ne me rappelle plus...

Re: [Java VM] Interface, boutons, etc. (en cours)

Publié : lun. 17 janv. 2011, 13:33
par FoolEcho
Je pense que la mocheté est subjective et que le tutoriel répond à toutes les questions (c'est lundi, j'fais mon benjarobin :copain: )
Bon d'accord, Sun n'était pas très inspiré.

Méthode 1, changement dans le code pour obtenir le rendu GTK (ou tout autre rendu désiré) avec un test pourri:

Code : Tout sélectionner

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.UIManager;


public class MainFrame {

	public static void main(String[] args) {
		try {
			
//			String lookAndFeel = "javax.swing.plaf.metal.MetalLookAndFeel";
//			String lookAndFeel = "com.sun.java.swing.plaf.motif.MotifLookAndFeel";
			String lookAndFeel = "com.sun.java.swing.plaf.gtk.GTKLookAndFeel";

			UIManager.setLookAndFeel(lookAndFeel);

			JFrame frame = new JFrame("test");
			
			JPanel panel = new JPanel();
			panel.add(new JButton("nothing"));
			panel.add(new JButton("always nothing"));
			
			frame.getContentPane().add(panel);
			frame.pack();
			frame.setVisible(true);
		} catch (Exception e ){
			e.printStackTrace();
		}
	}
}
Cf. le tutoriel pour changement à la volée, option en ligne de commande, etc...

Méthode 2, prise en charge permanente sous Arch (openjdk-6):
Créer un fichier /usr/lib/jvm/java-6-openjdk/jre/lib/swing.properties contenant:

Code : Tout sélectionner

swing.defaultlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel
Puis démarrer n'importe quel appli java (de préfèrence une qui n'a pas de thème défini)...