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

Messages postés
7
Date d'inscription
samedi 11 novembre 2017
Dernière intervention
16 novembre 2017
- - 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

1 réponse

Messages postés
15858
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
11 décembre 2018
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
Messages postés
15858
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
11 décembre 2018
> Kiss9
Messages postés
7
Date d'inscription
samedi 11 novembre 2017
Dernière intervention
16 novembre 2017
-
Dans le premier code tu avais
JTextField field = new JTextField();
et bien tu mets le deuxième code juste après.
Kiss9
Messages postés
7
Date d'inscription
samedi 11 novembre 2017
Dernière intervention
16 novembre 2017
-
Merci, c'est génial
Kiss9
Messages postés
7
Date d'inscription
samedi 11 novembre 2017
Dernière intervention
16 novembre 2017
-
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
Messages postés
15858
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
11 décembre 2018
> Kiss9
Messages postés
7
Date d'inscription
samedi 11 novembre 2017
Dernière intervention
16 novembre 2017
-
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);
> KX
Messages postés
15858
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
11 décembre 2018
-
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.