JAVA : Recompiler les librairies [Résolu]

Signaler
Messages postés
10
Date d'inscription
jeudi 25 mars 2004
Statut
Membre
Dernière intervention
4 mars 2010
-
Messages postés
2333
Date d'inscription
samedi 28 février 2004
Statut
Membre
Dernière intervention
26 juillet 2013
-
Bonjour tout le monde !

Je viens de developper une classe JAVA, mais je suis coincé car j'ai besoin d'accéder à des fonctions "private" de la classe javax.swing.JOptionPane. De plus j'aurrais besoins de redéfinir certaines de ses fonctions.

Comment dois-je donc faire pour recompiler la librairie JAVA ainsi personnalisée ?

Merci d'avance à tous !

5 réponses

Messages postés
2333
Date d'inscription
samedi 28 février 2004
Statut
Membre
Dernière intervention
26 juillet 2013
36
Salut:

J'ai jetté un coup d'oeil sur la documentation et je n'ai pas vu aucun membre privé, tous sont soit protected soit public.

D'où, tu peux étendre cette classe.
Messages postés
10
Date d'inscription
jeudi 25 mars 2004
Statut
Membre
Dernière intervention
4 mars 2010

En fait, je veux utiliser la fonction createDialog qui est définie dans cette classe. J'ai regardé les sources, et elle est bien privée (C:\j6\src\javax\swing\JOptionPane.java) :

private JDialog createDialog(Component parentComponent, String title,
            int style)
            throws HeadlessException {

        final JDialog dialog;

        Window window = JOptionPane.getWindowForComponent(parentComponent);
        if (window instanceof Frame) {
            dialog = new JDialog((Frame)window, title, true);   
        } else {
            dialog = new JDialog((Dialog)window, title, true);
        }
     if (window instanceof SwingUtilities.SharedOwnerFrame) {
        WindowListener ownerShutdownListener =
        (WindowListener)SwingUtilities.getSharedOwnerFrameShutdownListener();
         dialog.addWindowListener(ownerShutdownListener);
     }
        initDialog(dialog, style, parentComponent);
        return dialog;
    }

Sinon je penses pas que mon compilateur générerais cette erreur :

.\ExtNumPad.java:29: createDialog(java.awt.Component,java.lang.String,int) has p
rivate access in javax.swing.JOptionPane
        JDialog dialog = pane.createDialog(null, "Clavier virtuel", JOptionPane.
PLAIN_MESSAGE);

Merci en toute cas pour une réponse aussi rapide !
Messages postés
2333
Date d'inscription
samedi 28 février 2004
Statut
Membre
Dernière intervention
26 juillet 2013
36
Salut:

Si tu veux créer un JDialog à partir d'un JOptionPane il faut procéder ainsi:

JOptionPane pane =
new JOptionPane ("Texte",

                                    JOptionPane.ERROR_MESSAGE,
                                    JOptionPane.OK_OPTION);


JDialog dlg = pane.createDialog (null, "Texte");

dlg.setVisible (true);
Messages postés
2333
Date d'inscription
samedi 28 février 2004
Statut
Membre
Dernière intervention
26 juillet 2013
36
Il faut voir la documentation.
Messages postés
10
Date d'inscription
jeudi 25 mars 2004
Statut
Membre
Dernière intervention
4 mars 2010

En fait, je viens de trouver que les deux fonctions définies en "public" au dessus pourrais convenir à mon application. Merci beaucoup !!!!!