2016-07-30 3 views
0

J'essaie d'utiliser UIManager dans java pour que toutes mes GUI et interfaces graphiques d'erreur utilisent les mêmes couleurs. Le problème est que je n'arrive pas à changer la couleur du bouton lorsque j'utilise le style Windows, et je n'arrive pas à changer la barre de titre de l'interface graphique.Java Windows UIManager

enter image description here

Code:. Son assez simple, j'appelle UIManager.getLookAndFeelDefaults() mettre ("Button.background", buttonColor) Anda quelques autres modifications de l'interface utilisateur. Rien de majeur ...

Répondre

1

Si vous utilisez JOptionPane,

-vous un changement du titre en utilisant ce format pour utiliser votre propre titre.

JOptionPane.showMessageDialog(null, "This is the message", "This is the title", JOptionPane.YES_NO_OPTION);

Pour définir la couleur de retour au sol de dialog-

UIManager UI=new UIManager(); 
UI.put("OptionPane.background", Color.white); 
UI.put("Panel.background", Color.white); 
JOptionPane.showMessageDialog(null,"Text","SetColor",JOptionPane.YES_NO_OPTION); 

Pour changer les boutons dans le dialogue ou tout le reste, créez votre propre JDialog et définir les caractéristiques des boutons que vous voulez.

+0

Pourquoi créer une nouvelle instance UIManger? Je travaille également sur l'implémentation de mes propres dialogues au cas où je ne pourrais pas faire fonctionner UIManager correctement. – DarkGuardsman

+1

Si vous utilisez votre propre boîte de dialogue, l'instance d'UImanager n'est pas requise. – Sirsendu

+0

Ya, mais UIManager simplifie beaucoup le processus si je peux le faire fonctionner :) – DarkGuardsman

2

UIManager.getLookAndFeelDefaults(). Mis ("Button.background", buttonColor)

Pour la couleur des boutons de boîtes de dialogue JOptionPane Je ne comprends pas pourquoi cela ne fonctionne pas. Cela devrait. Peut-être un effet secondaire. Nous ne voyons pas tout votre code.
Essayez ce code simple, vous devriez voir seulement les boutons verts.

package swing.uimanager; 

import java.awt.Color; 

import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JOptionPane; 
import javax.swing.UIDefaults; 
import javax.swing.UIManager; 

public class JFrameWithUIManger extends JFrame { 

    public static void main(String[] args) { 
     new JFrameWithUIManger(); 
    } 

    public JFrameWithUIManger() { 
     final UIDefaults lookAndFeelDefaults = UIManager.getLookAndFeelDefaults(); 
     lookAndFeelDefaults.put("Button.background", Color.GREEN); 

     add(new JButton("A button")); 
     pack(); 
     setVisible(true); 
     JOptionPane.showMessageDialog(this, "hello I am a message dialog"); 
     JOptionPane.showConfirmDialog(this, "hello I am a question dialog", "do you like me ?", JOptionPane.YES_NO_OPTION); 
    } 
} 

Pour le fond blanc dans le titre, vous avez une couleur (blanche), donc cela semble fonctionner. Peut-être, un problème dans une valeur-clé. Postez s'il vous plaît si vous voulez que nous comprenions mieux.

Modifier

Après avoir vu le code, je compris votre problème. C'est le look and feel utilisé. Vous n'utilisez pas l'aspect et la convivialité par défaut (métal).
Probablement, vous ne savez pas mais tout l'aspect et les sensations dans Swing ne naissent pas égaux.
En fait, certaines options et options de mixage sont prises en charge par certains aspects, mais ne sont pas supportées par d'autres aspects.
Si vous utilisez l'aspect et la convivialité par défaut, vous devriez avoir moins de problèmes de compatibilité.
La meilleure façon de savoir si correctement pris en charge est de faire rapport à certains documents officiels, mais il est vrai que beaucoup d'informations à ce sujet est sec, avec des erreurs, et non détaillées

Dans le lien que vous avez publié dans votre commentaire: http://nadeausoftware.com/articles/2008/11/all_ui_defaults_names_common_java_look_and_feels_windows_mac_os_x_and_linux#Button, les clés affichées dans les tableaux ne signifient pas que les valeurs sont présentes ou modifiables mais que seules les clés sont présentes dans le LAF.
Chaque LAF est responsable de prendre en compte ou non la clé et la possibilité de modifier les valeurs associées aux clés.

J'ai essayé avec Windows LAF de définir uniquement le bouton de couleur d'arrière-plan, il ne fonctionne pas non plus. Donc, cela ne semble pas être un effet secondaire, mais il semble qu'il manque plus de support sur cette fonctionnalité pour Windows LAF.Quoi qu'il en soit, vous pouvez intéresser le Nimbus si vous voulez un look officiel, agréable et plus récent et plus flexible que le look classique en métal. Nimbus document
Il est disponible depuis Java SE 6 Update 10.

Je suis d'accord avec vous, le métal est laid. Mais pourquoi ne pas utiliser nimbus au lieu de Windows LAF? C'est bien. J'ai essayé votre code qui modifie certaines valeurs de lAF avec Nimbus, ça marche bien. Peut-être, vous pourriez avoir quelques modifications mineures pour l'ajuster mais la base devrait être agréable.

+0

Je crée les JOptionPane de la même manière et voici mon code d'interface utilisateur https: //gist.github.com/DarkGuardsman/9820dedcfd6dbdfbd4138bf0df3007b9 le reste est à source fermée donc je ne peux pas tout partager. Cependant, je pense que c'est un effet secondaire car je reçois d'autres erreurs bizarres maintenant. Par exemple JPanels qui ne deviendra pas transparent. – DarkGuardsman

+0

L'aspect et la convivialité du métal par défaut sont visuellement mauvais, quelque chose comme les graphiques de Windows 2000. C'est pourquoi j'utilisais le style Windows qui, selon plusieurs documents, permet de changer les couleurs d'arrière-plan. De plus, le fait de changer l'apparence du métal redimensionne mes boutons pour qu'ils soient beaucoup plus petits. http://nadeausoftware.com/articles/2008/11/all_ui_defaults_names_common_java_look_and_feels_windows_mac_os_x_and_linux#Button – DarkGuardsman

+0

:/bit impair sur la façon dont tous ces segments UIManager sont gérés, vous attendez un certain niveau de cohérence entre eux. Aussi des fonctionnalités de base comme changer les couleurs. Quant à nimbus ce n'est pas ce que je recherche dans une interface utilisateur et cela change trop les visuels des autres interfaces graphiques. De plus, je devrais changer toutes mes entrées clés car j'ai entendu les clés nimbus sont différentes. Merci pour l'aide, vos commentaires ont été utiles – DarkGuardsman