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

Interfaces Graphiques Discussion :

[uitable] probleme de gestion des ressources - run/debugging


Sujet :

Interfaces Graphiques

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2016
    Messages : 3
    Points : 6
    Points
    6
    Par défaut [uitable] probleme de gestion des ressources - run/debugging
    Bonjour à tous,

    Je participe au développement d'un outil sous Matlab R2013b (désolé, la MàJ n'est pas possible dans mon cas) et j'aide au développement de son interface graphique.

    Je cherche utiliser une uitable, mais comme il n'existe pas beaucoup d'options sous Matlab pour la mettre en forme, j'utilise entre autre findjobj.
    Mon objectif est que sa taille s'adapte à mes données, qu'elle soit placée de manière "normalisée" (ie Position décrite avec les coordonnées en pourcentage et non pas en nombre de pixels), et que celle-ci s'adapte à la modification de la taille de la fenêtre par l'utilisateur.

    J'ai rencontré quelques soucis, et j'ai donc du bricoler un peu pour arriver au résultat souhaité : comme l'adaptation aux données ne semble fonctionner qu'avec les coordonnées par pixel, je suis obligé de rebasculer sur des coordonnées "normalisées" pour mon placement dans la fenêtre), et l'adaptation à la modification de la fenêtre est réalisée par l'appel à findjobj.

    Je récupère alors une erreur lors de l'utilisation de l'objet renvoyé par findjobj :

    No appropriate method, property, or field getViewport for class
    javahandle_withcallbacks.com.mathworks.hg.peer.HeavyweightLightweightContainerFactory$UIComponentLightweightContainer.

    Error in myJobGUI/InitMainFig (line 4805)
    jTable = jscroll.getViewport.getView;
    Mon gros problème est que cela se passe différemment en debugging... Et encore, je n'arrive pas toujours à comprendre quand cela marche ou pas... En tout cas, quand je lis les lignes pas à pas, tout fonctionne, mais dès que je lis tout d'un coup, cela ne fonctionne plus. D'ailleurs, j'observe pour mon interface graphique qu'elle s'affiche différemment quand cela bugue, l'adaptation de la taille au donnée ne se fait pas bien, comme si elle était passée en système de coordonnées normalisées avant d'avoir réalisé le recadrage...
    Au cours de mes recherches, j'ai lu que l'allocation des ressources étaient differentes en mode debugging... Je me suis donc dit que cela venait de là, mais aucune idée de la raison profonde de mon problème... Pour information, cela n'a rien à voir avec les autre fichiers .mat, car le problème appairait lorsque je lance simplement le script de mon interface.

    Voici ci-dessous le bout de code qui pose problème, inséré ici dans une classe simplifiée (normalement, mon uitable est insérée dans plusieurs Panels). Il est intéressant de noter que ce bout de code fonctionne parfaitement, mais bugue dès qu'il est insérré dans mon interface principale; ce qui me conforte dans cette histoire d'allocation des ressources.
    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
     
    classdef GUI_test < handle
     
         properties   
     
           version      =   0000000;
            % GUI state related members
            gui_state   =   [];
            % GUI handles
            gui_handles =   [];       
     
       end % end of properties
     
        methods
     
            function self = GUI_test(self)
                InitMainFig(self);
            end     
        end
     
        methods (Access = private)
     
            function self = InitMainFig(self)
                self.gui_handles.MainFig = figure( ...
                    'Units', 'normalized', ...
                    'Position', [0.1 0.1 0.4 0.4], ...
                    'MenuBar', 'none', ...
                    'Name', 'my GUI',...
                    'NumberTitle', 'off')
     
                values={'0.5','42 %';'0.7','28 %'};
                rnames = {'Title 1','Title 2'};
                cnames = {'Field 1','Field 2'};
     
                self.gui_handles.FinalValuesTable_SVSTM = uitable( ...
                    'Parent', self.gui_handles.MainFig, ...
                    'Data',values, ...
                    'FontSize', 12, ...
                    'FontWeight', 'bold', ...
                    'FontName','FixedWidth', ...
                    'ColumnName', cnames, ...
                    'RowName', rnames, ...
                    'Position', [1 1 400 100]);
     
                % à partir d'ici, cela ne fonctionne que si je lis le script pas à pas...
     
                % adapter la taille du tableau aux données
     
                extendpanel=get(self.gui_handles.FinalValuesTable_SVSTM,'Extent');
                set(self.gui_handles.FinalValuesTable_SVSTM,'Position',extendpanel);
     
                % positionner le tableau de façon "normalisée"
     
                set(self.gui_handles.FinalValuesTable_SVSTM,'Units','normalized');
                positionpanel=get(self.gui_handles.FinalValuesTable_SVSTM,'Position');
                positionpanel(1)=0.01;
                positionpanel(2)=0.07;
                set(self.gui_handles.FinalValuesTable_SVSTM,'Position',positionpanel);
     
                % modifier la fenêtre de façon à ce qu'elle soit flexible
                % lorsqu'on change la taille de la fenêtrer
     
                jscroll=findjobj(self.gui_handles.FinalValuesTable_SVSTM);
     
                jTable = jscroll.getViewport.getView; %erreur dans mon vrai code
                jTable.setAutoResizeMode(jTable.AUTO_RESIZE_SUBSEQUENT_COLUMNS);
            end
        end
    end
    Auriez-vous des idées quant à la source du problème ? Ou une manière différente de répondre à mes contraintes graphiques plus... robuste

    Merci d'avance !

    Bonne journée.

  2. #2
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2016
    Messages : 3
    Points : 6
    Points
    6
    Par défaut
    Re-Bonjour !

    J'ai résolu mon problème, voici la réponse pour ceux que cela intéresserait :
    Je n'y étais pas du tout, il se trouve que pour utiliser la fonction findjobj, il faut (dans mon cas, je ne sais pas si c'est général) que le panneau parent de l'objet ciblé soit "visible"... Or à chaque fois que je passais en débugging, je faisais apparaître le panneau avant de lancer les étapes suivantes pour voir l'évolution de mon objet... Une manipulation pas si anodine finalement ><

    Bref, rien à voir avec un problème d'allocation de ressources.

    A plus !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Probleme de gestion des menus
    Par Orahn dans le forum MFC
    Réponses: 5
    Dernier message: 18/11/2005, 13h07
  2. Probleme de gestion des controls
    Par Ob1 dans le forum Windows
    Réponses: 2
    Dernier message: 16/07/2005, 10h38
  3. [DLL] Gestions des ressources textes (StringTable)
    Par Clorish dans le forum Langage
    Réponses: 1
    Dernier message: 26/05/2005, 16h50
  4. [Oracle]probleme de gestion des utilisateurs
    Par gentarik dans le forum Oracle
    Réponses: 5
    Dernier message: 09/03/2005, 12h58
  5. [Swing] Gestion des ressources
    Par speedster dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 13/11/2004, 15h09

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