Je dois changer la taille d'un ButtonField. C'est à l'intérieur d'un VerticalFieldManager qui est le seul VFM dans la MainPage.Définir la hauteur d'un ButtonField
J'ai déjà changé sa largeur avec succès (en remplaçant setPreferredWidth() était suffisant). Cependant, j'ai de la difficulté à changer sa hauteur.
Jusqu'à présent, j'ai remplacé setPreferredHeight() et il n'a rien fait. J'ai essayé la mise en page remplaçant comme celui-ci (a essayé toutes les permutations de lignes): commentaires
protected void layout(int arg0, int arg1)
{
//super.layout(myDesiredWidth, myDesiredHeight);
//setExtent(myDesiredWidth, myDesiredHeight);
}
J'ai aussi essayé de sublayout remplaçant son directeur (le vfm) comme ceci:
protected void sublayout(int arg0, int arg1)
{
super.sublayout(arg0, arg1);
ButtonField myButton = (ButtonField)getField(1);
layoutChild(myButton,myDesiredWidth,myDesiredHeight);
}
Il n » ai pas t travail. Je ne suis toujours pas sûr de savoir comment ces méthodes de mise en page et de sublayout fonctionnent en arrière-plan, mais je suis sûr que quelqu'un devait modifier la taille d'un bouton avant moi.
Modifier: Je serai plus précis. J'utilisais BB JRE 6.0 et redéfinissant getPreferredHeight() et layout() était bogué (changer la hauteur modifierait énormément la largeur, d'autres champs autour de mon bouton perdraient leur texte etc.). J'ai essayé BB JRE 5.0 et en augmentant la hauteur travaillée mais la diminution n'a pas fonctionné. Quoi qu'il en soit, j'ai beaucoup googlé et je n'ai pas pu trouver une réponse claire, je suppose que je dois créer mon propre champ personnalisé et implémenter la méthode de peinture à partir de zéro.
Dans votre cas , vous n'avez rien d'autre que le bouton lui-même. Dans mon cas, j'ai ceux: MainPage -> VMF -> HFM, bouton, HFM, HFM. Lorsque je redéfinir layout() et utiliser setExtent(), sa machine virtuelle ne peut pas définir la mise en page correctement. – mostruash
Somany VFM ou HFM pas de problème, si vous voulez faire quelque chose à particulier labelField, buttonField, HFM ou n'importe quel champ, alors leur méthode de remplacement que vous devez utiliser, alors seulement cela fonctionne pour un champ particulier seulement; – alishaik786