2010-05-29 4 views
1

Lorsque j'ai exécuté ce qui suit, j'ai remarqué un espacement entre les nœuds; Ma recherche a révélé que - 1) Si je n'ajoute aucun texte à win1 via setwininfo, alors il n'y a pas de problème. 2) Lorsque j'inclus ce code dans une application plus grande, et lorsqu'un clic sur un bouton est récupéré ailleurs, mystérieusement l'espacement est corrigé. 3) J'ai essayé de lier les noeuds win1 & win2 au contenu de la scène - mais pas de chance.Javafx Problème de mise en page avec VBox & HBox

def mainframew: Entier = 250; def mainframeh: Entier = 500;

classe CtrlWindow étend CustomNode {

var wininfo : String; 
var fsize : Integer; 
var width : Integer; 

public function setWinInfo(info : String) { 
    wininfo = info; 
} 

override protected function create() : Node { 
    var win = Group { 
            content: [ 
             VBox { 
               content: [ 
                Text { 
                  font : Font { 
                    size: fsize 
                  } 

                  content : bind wininfo 

                  textAlignment : TextAlignment.CENTER // did not work 
                } 
               ] 
             } 

             Rectangle { 
               width: width, height: 25 
               fill: Color.TRANSPARENT 
               strokeWidth : 2 
               stroke : Color.SILVER 
             } 

            ] 
          } 

    return win; 
} 

}

exécution de la fonction publique (args: String []) {

var win1 = CtrlWindow {fsize: 14, largeur: mainframew}; var win2 = CtrlWindow {fsize: 14, largeur: mainframew};

win1.setWinInfo ("L'espacement entre ces nœuds"); Win2.setWinInfo ("se corrige après avoir reçu un événement");

étape {

title : "MyApp" 
scene: Scene { 
    width: mainframew 
    height: mainframeh 
    content: [ 
         VBox { 
           spacing: 0 
           content: [ 
              HBox { 
                content: win1 
              } 

              HBox { 
                content: win2 
              } 
           ] 
         } 
      ] 
} 
} 
+0

Essayez de formater votre code: indent seulement avec 4 espaces. Actuellement, il est complètement illisible. –

Répondre

1

En supposant que vous utilisez JavaFX 1.3, le problème peut être lié aux dimensions préférées du CtrlWindow. Vous pouvez utiliser un layoutInfo pour définir une taille préférée commune, sinon la taille préférée changera avec le contenu des deux nœuds CtrlWindow.

Quelque chose comme:

win1 = CtrlWindow{ 
     fsize:14 
     layoutInfo : LayoutInfo { width: mainframew, minHeight: 50 } 
    } 

Lorsque vous simplement définir la largeur (sans bind), ce sera remis à la taille préférée dans la mise en page HBox.