Vertical Align de GridBagLayout Panneau sur BorderLayout.CENTRE
Ce que je suis en train de faire est de placer un GridBagLayout Panneau sur le centre de mon BorderLayout et verticale aligner le GridBagLayout panneau ( /et texte ) vers le HAUT ( parce qu'il met automatiquement dans le milieu, horizontalement ET verticalement ).
Donc ce que j'ai d'abord essayé ( mais fini par avoir le texte de la GridBagLayout encore dans le total milieu de la page au lieu de la moyenne x et supérieur y):
import java.awt.*;
import java.applet.*;
import javax.swing.*;
import javax.imageio.*;
import javax.swing.BorderFactory;
import javax.swing.border.*;
import java.awt.event.*;
public class Test extends JApplet implements MouseListener, ActionListener {
public void init() {
//create borderlayout
this.setLayout(new BorderLayout());
//create a GridBagLayout panel
JPanel gb = new JPanel(new GridBagLayout());
JLabel content = new JLabel("Some text");
//set GridBagConstraints (gridx,gridy,fill,anchor)
setGBC(0, 0, GridBagConstraints.VERTICAL, GridBagConstraints.NORTH);
gb.add(content, gbc); //gbc is containing the GridBagConstraints
this.add(gb, BorderLayout.CENTER);
}
}
J'ai donc essayé d'utiliser le gridbagconstraints d'ancrage pour régler l'alignement verticalement vers le nord, en haut, mais cela ne semble pas fonctionner. J'ai aussi essayé de redimensionner le GridBagLayout panneau lui-même ( à rendre toute la hauteur de la présentation, 100%, à l'aide du panneau.setSize et setPreferredSize ), puis alignez verticalement les éléments à l'aide de la gridbagconstraints.ancre, mais cela ne fonctionne pas non plus.
Quelqu'un peut-il m'aider sur ce point?
Merci d'avance,
Meilleures Salutations,
Skyfe.
Donc ma question est
Je ne comprends toujours pas pourquoi ce ne serait pas une SSCCE ( pscode.org/sscce.html ) c'est court, je n'ai affiché le code qui concerne le problème, et c'est exact, et je l'ai dit le problème avec le code ci semble comme une "SSCCE" pour moi
Si c'est qu'il doit être en mesure de copier-collé, il suffit de le copier-coller dans la méthode init de base d'un code de l'applet ou dans la méthode normale de java le code de l'application.
OriginalL'auteur Skyfe | 2010-11-09
Vous devez vous connecter pour publier un commentaire.
Prendre soin de regarder la Javadoc de chaque propriété de l'
GridBagConstraints
classe avant de l'utiliser.Lors de la configuration de gbc.fill = GridBagConstraints.VERTICALE, la mise en page redimensionne le JLabel pour remplir tout l'espace vertical disponible. Par défaut, les caractères d'un JLabel sont centrés dans son espace. Donc, ce que vous devez faire est de: JLabel.setVerticalAlignment(SwingConstants.HAUT de page);
Je pense que l'extension de JFrame est inutile dans cet exemple.
D'accord avec @fachexot, la classe n'a pas besoin de s'étendre JFrame, c'est un oubli.
OriginalL'auteur Montecarlo
Votre
est de rendre le composant (le"contenu") de remplissage go verticalement. Cela peut être la raison pour laquelle vous pensez que votre composant(le contenu) est toujours au milieu. Essayez de
GridBagConstraints.NONE
.Cette mesure permettra d'harmoniser votre contenu vers le haut à l'intérieur du panneau qui a GridBagLayout.
de l'extérieur du composant, vous pouvez utiliser quelque chose comme:
et voir si cela fonctionne.
J'ai édité ma réponse pour être plus précis.
OriginalL'auteur
Outre la définition de l'
fill
à AUCUN, également misweighty
à une non-valeur 0 (par exemple, 1.0). Cela indique à la disposition d'attribuer la totalité de l'espace supplémentaire dans le GridBag colonne de la cellule, mais depuis l'étiquette elle-même est ancré au nord et à l'ensemble de ne pas remplir, l'espace supplémentaire sera attribué sous l'étiquette.OriginalL'auteur jwaddell