Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 29/08/2006, à 13:15

alien7

Glade et class

Bonjour
J'utilise glade et java pour faire une ptite appli, voilà je crée une instance de glade dans la class principale pour appelé mon fichier glade, j'ai une 2e class avec des methodes et dans le concepteur glade je specifie une methode à executé suivant un clic sur un bouton, la methode se trouve dans ma 2e classe.

Comment specifié dans glade ou se trouve la methode a executé ? apparement il le cherche dans ma class principale.

J'espere avoir été clair
Merci d'avance


Il n'y a pas que l'informatique dans la vie
https://www.whybook.org

Hors ligne

#2 Le 30/08/2006, à 16:09

alien7

Re : Glade et class

Personne n'utilise glade ? sad


Il n'y a pas que l'informatique dans la vie
https://www.whybook.org

Hors ligne

#3 Le 30/08/2006, à 19:36

trucutu

Re : Glade et class

C'est quoi une "instance de Glade" ?
Tu cherches, dans ton appli, à chercher un fichier .glade ?
C'est quoi un concepteur Glade ?

Bon, sinon, si tu as créé un projet Java sous Glade, normalement, à la compilation (puis execution), le logiciel devrait ressembler et considérer toutes les classes et aller chercher les méthodes où il faut. Les messages d'erreurs ?....


La chanson du dimanche - "La pêche !"
PC acheté chez Novatux : entièrement satisfait.
Faire des recherches solidaires !

Hors ligne

#4 Le 30/08/2006, à 21:38

alien7

Re : Glade et class

Justement il n'y va pas chercher les methodes là ou il faut, il cherche seulement dans la classe ou je fais appelle a mon fichier glade, or ma methode se trouve dans une autre class.

instance de glade :
glade = new LibGlade("src/gui.glade", this);
enfin desolé si je m etrompe dans les termes.

L'erreur que me retournbe la console est :
java.lang.NoSuchMethodException : App.zoomInAction

Dernière modification par alien7 (Le 30/08/2006, à 21:39)


Il n'y a pas que l'informatique dans la vie
https://www.whybook.org

Hors ligne

#5 Le 30/08/2006, à 22:38

Noé

Re : Glade et class

heu il n'y a pas de compilateur de .glade vers Java ?


dotdotno ou Phlogistique sur IRC
Jabber : noe.rubinstein CHEZ fritalk.com

Hors ligne

#6 Le 30/08/2006, à 23:51

alien7

Re : Glade et class

Non il se sert du fichier glade vu que glade c'est juste un fichier xml, pas besoin de generer un code pour java, il se sert directement du fichier xml.


Il n'y a pas que l'informatique dans la vie
https://www.whybook.org

Hors ligne

#7 Le 01/09/2006, à 00:32

trucutu

Re : Glade et class

Les méthodes dont tu parles, c'est tout en java ? cela se passe bien l'interfacage avec Glade ? Comment tu compile ton appli ? un petit exemple simplifié de tes classes/méthodes ? ....


La chanson du dimanche - "La pêche !"
PC acheté chez Novatux : entièrement satisfait.
Faire des recherches solidaires !

Hors ligne

#8 Le 01/09/2006, à 13:09

alien7

Re : Glade et class

Oui l'interfacage se passe bien avec glade. Voilà mon code.

public class Jview {
    public static ToolButton tb_open, tb_pre, tb_suiv, tb_zoomIn, tb_zoomOut, tb_initPixSize, tb_fitPix;
    static LibGlade glade;

    Window window;
    static Viewer viewer;
    static Viewport viewport1;
    
    public Jview() {
    	try {
    		glade = new LibGlade("src/gui.glade", this);
    		} catch (GladeXMLException e) {
    			e.printStackTrace();
            } catch (FileNotFoundException e) {
            	e.printStackTrace();
            } catch (IOException e) {
            	e.printStackTrace();
            }
            label1 = (Label) glade.getWidget("label1");
       		viewer = new Viewer();
       		viewport1 = (Viewport) glade.getWidget("viewport1");
       		viewport1.add(viewer);
    		} );
        }
                
        public static void main(String[] args) {
        	Program.initGnomeUI("Jview", "0.1", args);
        	new Jview();
        	Gtk.main();
        }
    
        public void onWindowDeleteEvent() {
            System.out.println("Quit...");
            Gtk.mainQuit();
        }
        
    	public void appQuitAction ()
    	{
    		Gtk.mainQuit();
    	}

    	public void zoomInAction () {
    		viewer.zoomInAction();
    	}
    	
    	public void zoomOutAction () {
    		viewer.zoomOutAction();
    	}
}

Voilà j'ai fait un peu le ménage bien sûr pour simplifier au mieu. Donc pour palier au probleme j'ai crée pour l'instant les focntions suivantes :

    	public void zoomInAction () {
    		viewer.zoomInAction();
    	}
    	
    	public void zoomOutAction () {
    		viewer.zoomOutAction();
    	}

Donc dans glade dna sl'onglet signal je met dans traitement je met zoomInAction. Mais voilà j'aurai voulu savoir si on peut pas faire autrement, appeler directement dans glade viewer.zoomInAction().

Voilà j'espere que c'est clair au moins là smile


Il n'y a pas que l'informatique dans la vie
https://www.whybook.org

Hors ligne

#9 Le 01/09/2006, à 16:02

trucutu

Re : Glade et class

Ben, c'est très bien comme ça...
tu peux utiliser où tu veux :
viewer.zoomInAction();
à partir du moment où tu le déclare dans la classe où tu veux l'utiliser

Qu'est ce que tu entends par "appeler directement dans glade" ? Ce qui n'est pas clair (pour moi), c'est que Glade est un IDE (si tu parles bien du logiciel...) qui va traduire ton API en code. Les appels de méthodes, s'est dans le code que cela intervient. Les widgets définis feront appels aux méthodes.


La chanson du dimanche - "La pêche !"
PC acheté chez Novatux : entièrement satisfait.
Faire des recherches solidaires !

Hors ligne

#10 Le 02/09/2006, à 13:06

alien7

Re : Glade et class

Qu'est ce que tu entends par "appeler directement dans glade" ? Ce qui n'est pas clair (pour moi), c'est que Glade est un IDE (si tu parles bien du logiciel...) qui va traduire ton API en code. Les appels de méthodes, s'est dans le code que cela intervient. Les widgets définis feront appels aux méthodes.

Ce que je veux dire c'est n'est il pas possible de définir dans glade directement, c'est à dire dans glade , dans l'onglet Signal et dans la zone traitement mettre directement par exemple viewer.zoomInAction().
Ca évite de déclarer dans la classe mère une méthode qui va elle meme faire appel à une autre méthode d'une autre classe.


Il n'y a pas que l'informatique dans la vie
https://www.whybook.org

Hors ligne

#11 Le 07/12/2006, à 10:33

Millman le vrai

Re : Glade et class

tu fais appel à quelles librairies? libglade-java je suppose... Est-ce que tu pourrais copier-coller les include sur le forum pour qu'on voit...

#12 Le 12/12/2006, à 10:26

lordphoenix

Re : Glade et class

alien7 a écrit :

Oui l'interfacage se passe bien avec glade. Voilà mon code.

public class Jview {
    public static ToolButton tb_open, tb_pre, tb_suiv, tb_zoomIn, tb_zoomOut, tb_initPixSize, tb_fitPix;
    static LibGlade glade;

    Window window;
    static Viewer viewer;
    static Viewport viewport1;
    
    public Jview() {
    	try {
    		glade = new LibGlade("src/gui.glade", this);
    		} catch (GladeXMLException e) {
    			e.printStackTrace();
            } catch (FileNotFoundException e) {
            	e.printStackTrace();
            } catch (IOException e) {
            	e.printStackTrace();
            }
            label1 = (Label) glade.getWidget("label1");
       		viewer = new Viewer();
       		viewport1 = (Viewport) glade.getWidget("viewport1");
       		viewport1.add(viewer);
    		} );
        }
                
        public static void main(String[] args) {
        	Program.initGnomeUI("Jview", "0.1", args);
        	new Jview();
        	Gtk.main();
        }
    
        public void onWindowDeleteEvent() {
            System.out.println("Quit...");
            Gtk.mainQuit();
        }
        
    	public void appQuitAction ()
    	{
    		Gtk.mainQuit();
    	}

    	public void zoomInAction () {
    		viewer.zoomInAction();
    	}
    	
    	public void zoomOutAction () {
    		viewer.zoomOutAction();
    	}
}

Voilà j'ai fait un peu le ménage bien sûr pour simplifier au mieu. Donc pour palier au probleme j'ai crée pour l'instant les focntions suivantes :

    	public void zoomInAction () {
    		viewer.zoomInAction();
    	}
    	
    	public void zoomOutAction () {
    		viewer.zoomOutAction();
    	}

Donc dans glade dna sl'onglet signal je met dans traitement je met zoomInAction. Mais voilà j'aurai voulu savoir si on peut pas faire autrement, appeler directement dans glade viewer.zoomInAction().

Voilà j'espere que c'est clair au moins là smile

Je ne l'ai jamais fait en Java mais le principe est toujours le même
C'est dans l'appel à  LibGlade que tu définis la classe qui sert de support à ton interface.
quand tu fais

glade = new LibGlade("src/gui.glade", this);

le "this" en deuxième paramètre indique que c'est la classe en cours qui sera utilisé pour gérer les événements de ta fenêtre. Mais honnêtement je ne vois pas trop l'intéret de faire ça si tu veux vraiment utiliser une autre classe déplace l'appel à LibGlade dans le constructeur de cette classe et ça réglera ton problème.

Hors ligne