IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AWT/Swing Java Discussion :

Comment appeler classe JInternalFrame dans un menu Bar


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    UUA
    Inscrit en
    Mars 2017
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : UUA
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2017
    Messages : 82
    Par défaut Comment appeler classe JInternalFrame dans un menu Bar
    Bonjour,

    J'ai cette classe ''JxBrowser'' (qui est un webview+ openGl proposé par TeamDev...version d'essai ) je l'ai tranformé en JinternalFrame
    et je veux l'appeler par menu bar, mais ça m'affiche rien

    classe JxBrowser en tant que JinternalFrame :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    package javaapplication4;
     
    import com.teamdev.jxbrowser.chromium.Browser;
    import com.teamdev.jxbrowser.chromium.swing.BrowserView;
     
    import javax.swing.*;
    import java.awt.*;
    /**...*/
    public class JxBrowser {
    public static void main(String[] args) {
    Browser browser = new Browser();
    BrowserView view = new BrowserView(browser);
     
    JInternalFrame iframe = new JInternalFrame();
    iframe.add(view, BorderLayout.CENTER);
    iframe.setSize(700, 500);
    iframe.setVisible(true);
     
    browser.loadURL("http://www.google.com");
    }
    }

    menue bar action je pense l'erreur içi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
        private void GraphPScreenActionPerformed(java.awt.event.ActionEvent evt) {                                             
            // TODO add your handling code here:
     
                  JxBrowser browser = new JxBrowser();
           //      JDesktopPane jDesktop = null;
                 jDesktop.add(browser);
     
                  browser.setVisible(true);
        }
    il faut télécharger le version d'essai de Jxbrowser et ajoter les fichier .Jar si quelq'un veut m'aider

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Salut,

    Premièrement, au JDesktopPane, c'est une JInternalFrame qu'il faut ajouter. Ta classe JXBrowser n'est pas une JInternalFrame, donc ça ne risque pas de fonctionner.
    Secondement, le code d'une méthode static ne risque pas d'être appelée lors de la construction de l'instance de la classe qui l'a défini, pas plus que le code de la méthode static puisse changer quoique ce soit à l'instance construite si elle n'est pas accessible par cette méthode. Il faut revoir les bases de la définition de classe d'objet !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    public class JxBrowser extends JInternalFrame { // JXBrowser est une extensions de JInternalFrame, ce qui va permettre de s'en servir comme JInternalFrame
     
    	public JxBrowser() { 
    		super();
     
    		Browser browser = new Browser(); // il serait probablement plus interessant de mettre cette variable en attribut de la classe, pour pouvoir éventuellement la commander depuis l'extérieur (depuis d'autres menus par exemple)
    		BrowserView view = new BrowserView(browser);
     
    		add(view, BorderLayout.CENTER);
     
    		// ça je le mettrais en dehors (paramétré par ton action de menu, comme d'ailleurs tu le fais déjà pour le setVisible(true)), mais ça peut rester là si tu veux
    		setSize(700, 500);
    		setVisible(true);
     
    		browser.loadURL("http://www.google.com"); // l'url pourrait être mise en paramètre du constructeur (pour pouvoir la choisir dans le menu).
     
    	}
     
     
    }
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Membre confirmé
    Homme Profil pro
    UUA
    Inscrit en
    Mars 2017
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : UUA
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2017
    Messages : 82
    Par défaut
    Pourquoi la page web est séparée d'InternalFrame !!! elle est non déplaçable au contraire à sa JinternalFrame
    Nom : jjjjjjjjjj.PNG
Affichages : 639
Taille : 19,7 Ko

  4. #4
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    C'est le composant de browser qui a priori est foireux. La taille semble correcte, mais il se gauffre dans le traitement du positionnement (probable que le composant ait été mis au point pour une JFrame qui est associé à un handle système, mais pas testé pour les spécificités d'une JInternalFrame qui est une simulation logique).

    Tu es obligé d'utiliser ce composant ? Il y a d'autres alternatives, comme la WebView JavaFX ou DJNative. Sinon voir les forums de ta bibliothèque au sujet de l'intégration en JInternalFrame.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  5. #5
    Membre confirmé
    Homme Profil pro
    UUA
    Inscrit en
    Mars 2017
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : UUA
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2017
    Messages : 82
    Par défaut
    j'ai Utilisée JxBrowser car le Webview proposée par Oracle n'integre pas le OpenGl ...

    ok j'ai utliser cette ligne ( iframe.setLocation(830,170); )à pour modifier la Position du JinternalFrame ...mais je veux que la page et sa InternalFrame doivent non séparée !!!!!!!

    cette code là Proposée par TeamDev (JxBrowser Owner)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
    import com.teamdev.jxbrowser.chromium.Browser;
    import com.teamdev.jxbrowser.chromium.BrowserType;
    import com.teamdev.jxbrowser.chromium.swing.BrowserView;
     
    import javax.swing.*;
    import java.awt.*;
     
    /**
     * The sample demonstrates how to use Browser in JInternalFrame components.
     */
    public class JInternalFrameSample {
        public static void main(String[] args) {
            JDesktopPane desktopPane = new JDesktopPane();
            desktopPane.add(createInternalFrame("Browser One", "http://www.teamdev.com", 0));
            desktopPane.add(createInternalFrame("Browser Two", "http://www.google.com", 100));
     
            JFrame frame = new JFrame();
            frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
            frame.add(desktopPane, BorderLayout.CENTER);
            frame.setSize(800, 800);
            frame.setLocationRelativeTo(null);
            frame.setVisible(true);
        }
     
        private static JInternalFrame createInternalFrame(String title, String url, int offset) {
            Browser browser = new Browser(BrowserType.LIGHTWEIGHT);
            BrowserView view = new BrowserView(browser);
            browser.loadURL(url);
     
            JInternalFrame internalFrame = new JInternalFrame(title, true);
            internalFrame.setContentPane(view);
            internalFrame.setLocation(100 + offset, 100 + offset);
            internalFrame.setSize(400, 400);
            internalFrame.setVisible(true);
            return internalFrame;
        }
    }


    ok ça votre proposition :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    package javaapplication4;
     
    import com.teamdev.jxbrowser.chromium.Browser;
    import com.teamdev.jxbrowser.chromium.swing.BrowserView;
    import java.awt.BorderLayout;
     
    import javax.swing.*;
    //import java.awt.*;
    /**...*/
    public class JxBrowser extends JInternalFrame { // JXBrowser est une extensions de JInternalFrame, ce qui va permettre de s'en servir comme JInternalFrame
     
    	public JxBrowser() { 
    		super();
     
    		Browser browser = new Browser(); // il serait probablement plus interessant de mettre cette variable en attribut de la classe, pour pouvoir éventuellement la commander depuis l'extérieur (depuis d'autres menus par exemple)
    		BrowserView view = new BrowserView(browser);
     
    		add(view, BorderLayout.CENTER);
     
     
    		// ça je le mettrais en dehors (paramétré par ton action de menu, comme d'ailleurs tu le fais déjà pour le setVisible(true)), mais ça peut rester là si tu veux
    		setSize(700, 500);
    		setVisible(true);
     
     
    		browser.loadURL("http://www.google.com"); // l'url pourrait être mise en paramètre du constructeur (pour pouvoir la choisir dans le menu).
     
    	}
    }
    l'evennement sur le menue bar pour affichier le JinternalFrame :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    private void GraphPScreenActionPerformed(java.awt.event.ActionEvent evt) {                                             
            // TODO add your handling code here:
              JxBrowser iframe = new JxBrowser();
             iframe.setLocation(830,170);// on peut deplacer la page et sa JinternalFrame avec cette ligne 
              jDesktop.add(iframe);
     
     
            iframe.show();
     
     
        }

  6. #6
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Toute la différence entre ton implémentation et l'exemple donné est là : Browser browser = new Browser(BrowserType.LIGHTWEIGHT);. Essaye-donc ce paramétrage dans ton implémentation. Seulement rien ne garantit que openGL sera supporté en lightweb, et ça va probablement solliciter un max de cpu de tout manière pour faire le rendu.

    Citation Envoyé par Dubwa Voir le message
    j'ai Utilisée JxBrowser car le Webview proposée par Oracle n'integre pas le OpenGl ...
    Je ne suis pas un spécialiste de JavaFX, mais ça m'étonne ce que tu dis, parce qu'on trouve sur le web de la littérature sur un truc appelé OpenGLNode et des intégrations avec lwjgl ou jogl, comme par exemple, avec lwjgl : https://github.com/Spasi/LWJGL-FX. J'ai lu par ailleurs un billet sur JavaFX pour Java 9, OpenGL et WebGL.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

Discussions similaires

  1. Réponses: 3
    Dernier message: 14/09/2010, 10h14
  2. Comment appeler une image dans un struts menu
    Par newmar dans le forum Struts 1
    Réponses: 3
    Dernier message: 26/08/2010, 07h53
  3. Réponses: 2
    Dernier message: 21/02/2010, 04h44
  4. comment appeler un batch dans autoexec.bat ?
    Par hoaxpunk dans le forum Autres Logiciels
    Réponses: 8
    Dernier message: 11/05/2006, 17h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo