2012-03-15 2 views
3

avec les JPanel définies ci-dessous (noyées dans une JTabPanel dans un JSplitPane):MigLayout Shrink Comportement

Si je maximiser, le panneau est redessinée correctement aux nouvelles dimensions Si je réduis le panneau n'est pas repensées au précédent dimensions Si je fais glisser le coin pour augmenter la taille du panneau est redessinée pour corriger les dimensions Si je fais glisser un coin pour diminuer la taille du panneau n'est pas redessinée aux dimensions attendues

container.setLayout(new MigLayout("debug,fillx,wrap 5", 
    "[75:75:75][fill][75:75:75][fill][140:140:140,align left]")); 
container.add(labelSrcTitle, "span 4"); 
container.add(buttonAddRef, ""); 
container.add(srcTitle, "span"); 
container.add(srcListing, "span,grow"); 
container.add(sepRef,"span,growx"); 
container.add(refTitle,"span"); 
container.add(refListing,"span 4,grow"); 
container.add(buttonEdit,"split 2"); 
container.add(buttonDelete,""); 
container.add(name,"span 4,growx"); 
container.add(buttonSEdit,"split 3"); 
container.add(buttonSDelete); 
container.add(buttonSAdd,""); 
container.add(lType,""); 
container.add(lClaim,"grow"); 
container.add(lQual,""); 
container.add(lNotes,"grow"); 
container.add(buttonCEdit, "split 3"); 
container.add(buttonCDelete); 
container.add(buttonCAdd, ""); 

Je voudrais (et attendre) que si je maximise puis minimiser, l'écran sera redessiné à sa configuration d'origine. Qu'est-ce que je rate? Si c'est important, tous les champs JTextArea sont retournés à la ligne true.

Modifié:

Voici un exemple beaucoup plus simple - la question semble être avec JTextArea avec linewrap activée. Le code suivant dans un JFrame recrée le problème:

JPanel root = new JPanel(new MigLayout("fill,debug")); 
    JTextArea t = new JTextArea(); 

    t.setLineWrap(true); 

    root.add(t,"growx"); 
    setContentPane(root); 
    setLocationRelativeTo(null); 
    setSize(200, 200); 
+0

Je suppose que le composant "nom" (dit "Michaels, Edward") est pousser tout dehors pour une raison quelconque. Vous voyez comment il remplit sa cellule, alors que les autres composants "span 4" ne le font pas? Essayez d'enlever le growx et voyez quelle différence cela fait. En fonction de la version que vous avez, pousser/pousser se comporte un peu bizarre dans mon expérience. Ma compréhension est que le "remplir" dans la spécification de ligne équivaut à un "pousser" dans la spécification de la cellule. Peut-être que c'est quelque chose comme ça: http://stackoverflow.com/questions/2475787/miglayout-jtextarea-is-not-shrinking-when-used-with-linewrap-true/2739127#2739127 – Jim

+0

Problème résolu. Après avoir identifié le problème à JTextArea et Line Wrap, j'ai déterminé qu'il s'agissait d'un symptôme de MigLayout et JTextArea documentés à plusieurs endroits; et résolu en changeant root.add (t, "growx") en root.add (t, "growx, wmin 10") – ed4becky

Répondre

2

Problème résolu. Après avoir identifié le problème à JTextArea et à Line Wrap, j'ai déterminé qu'il s'agissait d'un symptôme de migration de ligne MigLayout et JTextArea documentée à plusieurs endroits; et résolu en changeant root.add (t, "growx") à root.add (t, "growx, wmin 10")

+0

Dans mon cas, c'est un 'JLabel' avec du texte html pour activer le retour automatique à l'intérieur de l'étiquette. Il ne peut pas calculer la bonne longueur et occupe toujours toute la largeur. L'ajout du composant avec une taille préférée ('w 200!')/Préférée ('w: 200:') a résolu le problème. – FaithReaper