Boîte de dialogue; changer la police de caractère. [Résolu]

Kiss9 7 Messages postés samedi 11 novembre 2017Date d'inscription 16 novembre 2017 Dernière intervention - 11 nov. 2017 à 09:00 - Dernière réponse :  Kiss9
- 17 nov. 2017 à 09:39
Bonjour, je suis en train d'implémenter une base de donnée sur Java.
Pour ce faire j'utilise JOptionPane.showInputDialog.

J'ai appris sur les forums que je peux changer la police du message affiché pour la question ainsi que le boutton avec UIManager.put.

Le problème ne vient pas des données écrites dans la boîte de dialogue mais des données reçu par l'utilisateur. Je trouve que la police de caractère qui reçoit le message entré par l'utilisateur est trop petite, à mon avis elle fait du 8 et j'aimerais augmenter la taille de cette police.

En vous remerciant. Kiss9
Afficher la suite 

Votre réponse

10 réponses

KX 15785 Messages postés samedi 31 mai 2008Date d'inscriptionModérateurStatut 21 octobre 2018 Dernière intervention - 11 nov. 2017 à 15:41
0
Merci
Bonjour,

"avec UIManager.put"
Si tu fais ça, tu vas changer le comportement de toute la fenêtre pour tous les composants, tu ne vas pas pouvoir préciser l'utilisation uniquement pour ce composant uniquement.

Le plus propre serait d'utiliser JOptionPane.showOptionDialog qui permet de customiser le composant à afficher afin d'y mettre un JTextField avec une police modifiée.

Exemple :

import java.awt.*;
import javax.swing.*;

public static String showInputDialog(Component parentComponent, String message, String title, int messageType, Icon icon, float fontSize) {
    JPanel panel = new JPanel(new BorderLayout());
    panel.add(new JLabel(message), BorderLayout.NORTH);
    JTextField field = new JTextField();
    field.setFont(field.getFont().deriveFont(fontSize));
    panel.add(field, BorderLayout.SOUTH);
    int n = JOptionPane.showOptionDialog(parentComponent, panel, title, JOptionPane.OK_CANCEL_OPTION, messageType, icon, null, null);
    return (n == JOptionPane.OK_OPTION) ? field.getText() : null;
}

Petit code de test pour comparer les deux InputDialog :

public static void main(String[] args) {
    Component parentComponent = null;
    String message = "Entrez un mot";
    String title = "Choix";
    int messageType = JOptionPane.QUESTION_MESSAGE;
    Icon icon = null;
    float fontSize = 15;

    String text1 = (String) JOptionPane.showInputDialog(parentComponent, message, title, messageType, icon, null, null);
    System.out.println(text1);

    String text2 = showInputDialog(parentComponent, message, title, messageType, icon, fontSize);
    System.out.println(text2);
}
KX 15785 Messages postés samedi 31 mai 2008Date d'inscriptionModérateurStatut 21 octobre 2018 Dernière intervention > Kiss9 7 Messages postés samedi 11 novembre 2017Date d'inscription 16 novembre 2017 Dernière intervention - 16 nov. 2017 à 17:33
Dans le premier code tu avais
JTextField field = new JTextField();
et bien tu mets le deuxième code juste après.
Kiss9 7 Messages postés samedi 11 novembre 2017Date d'inscription 16 novembre 2017 Dernière intervention - 16 nov. 2017 à 17:35
Merci, c'est génial
Kiss9 7 Messages postés samedi 11 novembre 2017Date d'inscription 16 novembre 2017 Dernière intervention - 16 nov. 2017 à 19:08
Une autre chose, je n'arrive pas agrandir la police du message . Je veux dire la question à poser.
La même question se pose pour le showMessageDialog
Comment faire sans utiliser le UIManager.
Merci.
KX 15785 Messages postés samedi 31 mai 2008Date d'inscriptionModérateurStatut 21 octobre 2018 Dernière intervention > Kiss9 7 Messages postés samedi 11 novembre 2017Date d'inscription 16 novembre 2017 Dernière intervention - 16 nov. 2017 à 20:58
Il faut appliquer la modification de la fonte sur le label de la même manière qu'on l'a fait pour le field.

Tu remplaces ça :
panel.add(new JLabel(message), BorderLayout.NORTH);

Par ça :
JLabel label = new JLabel(message);
label.setFont(label.getFont().deriveFont(fontSize));
panel.add(label, BorderLayout.NORTH);
Kiss9 > KX 15785 Messages postés samedi 31 mai 2008Date d'inscriptionModérateurStatut 21 octobre 2018 Dernière intervention - 17 nov. 2017 à 09:39
Merci
Commenter la réponse de KX

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.