Le positionnement d'un Composite dans une JFrame à la position spécifique
J'ai besoin d'une aide pour le positionnement d'un Composite dans une position spécifique dans une Jframe.
J'ai un Composite dans une classe qui extends JFrame, et j'ai besoin de mettre ce Composite dans une position x,y.
C'est quelque chose comme ceci:
public class Frame extends JFrame {
public Frame(){
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setLocation(250, 250);
this.setSize(300,300);
this.setVisible(true);
JPanel panel = new JPanel();
this.add(panel);
panel.setLocation(150, 150);
panel.add(new JButton("Hello!")); //just to show JPanel
}//Frame()
}//Frame
Je n'ai pas besoin d'un LayoutManager de la position de la Composite, parce que j'ai besoin de mettre que le Composite dans une position spécifique (comme 150,150 de l'exemple).
Mais si je ne le panneau.setLocation(150,150) comme dans le code ci-dessus, rien ne se passe, et un Composite de rester dans le nord-centre de l'image (même si je change x,y nombre à la place de 150,150).
Et il montre comme ceci:
http://i.imgur.com/Te3z0kv.png
Merci!!!! C'est ce que je voulais! 😀
le positionnement absolu n'est pas recommandée comme mesure de mes connaissances
OriginalL'auteur alecarnevale | 2013-11-25
Vous devez vous connecter pour publier un commentaire.
De l'image du panneau de contenu, le layout manager par défaut est un BorderLayout (NWSE+C). Faire:
besoin de mettre qu'un Composite dans une position spécifique (comme 150,150 de l'exemple). - c'est pas une raison pour utiliser un null mise en page. Coder en dur les valeurs est une idée idiote. Il y a toujours de meilleures façons de le faire. Par exemple vous mettez un
EmptyBorder
autour du panneau. Quiconque suggère à l'aide d'un null mise en page vraiment deservies une baisse de vote. À l'aide d'un null mise en page sera la cause de nombreux problèmes, en particulier pour les débutants que pour les programmeurs qui ne comprennent pas comment Swing fonctionne.ok merci!!!! Mais dans mon cas, j'ai à faire .setResizable(false) donc en position absolue est possible sans problèmes 🙂
ce n'est PAS la bonne solution. Je vous ai donné une meilleure alternative. Apprendre à tirer parti de Swing. À l'aide de gestionnaire de présentation est une fonctionnalité puissante, si vous utilisez le redimensionnement ou pas.
OriginalL'auteur Joop Eggen
à l'aide de setBounds(new Rectangle(96, 67, 98, 41));
vous pouvez le faire...
il suffit de voir les exemple
}
OriginalL'auteur Konzern
Un objet JFrame utilise le gestionnaire borderlayout par défaut et JPanels utilisation framelayout gestionnaire par défaut.
Si vous souhaitez utiliser le positionnement absolu, alors vous DEVEZ utiliser la valeur null mise en page parce que toute autre disposition de manager setLocation() et setSize() méthodes en fonction de ses propres humeurs, et non selon la façon dont VOUS le voulez.
Résumé: l'Utilisation setLayout(null) et utiliser la valeur null manager et ensuite utiliser setBounds(X,Y,largeur,hauteur) de la méthode.
OriginalL'auteur user3015246