Je ne trouve rien sur setBounds, ni à quoi il sert ni quelle est sa fonction. Quelqu'un pourrait-il m'éclaircir là-dessus? Merci beaucoup!
Vous pouvez utiliser setBounds(x, y, width, height)
pour spécifier la position et la taille d'un composant d'interface graphique utilisateur si vous définissez layout
sur null
. Ensuite (x, y)
est la coordonnée du coin supérieur gauche de ce composant.
setBounds
est utilisé pour définir le rectangle de délimitation d'un composant. Cela inclut sa position et sa taille.
Le est utilisé à plusieurs endroits dans le cadre.
Pour la plupart, vous ne devriez jamais l'appeler. Au lieu de cela, vous devez utiliser les gestionnaires de disposition appropriés et les laisser déterminer le meilleur moyen de fournir des informations à cette méthode.
Ceci est une méthode de Java.awt.Component
classe. Il est utilisé pour définir la position et la taille d'un composant:
setBounds
public void setBounds(int x, int y, int width, int height)
Déplace et redimensionne ce composant. Le nouvel emplacement du coin supérieur gauche est spécifié par x et y, et la nouvelle taille est spécifiée par la largeur et la hauteur. Paramètres:
- x - la nouvelle coordonnée x de ce composant
- y - la nouvelle coordonnée y de cette composante
- width - la nouvelle largeur de ce composant
- hauteur - la nouvelle hauteur de ce composant
x
et y
comme ci-dessus correspondent au coin supérieur gauche dans la plupart (tous?) des cas.
C'est un raccourci pour setLocation
et setSize
.
Cela ne fonctionne généralement que si le modèle/le gestionnaire de modèle est inexistant, c'est-à-dire null.
Il y a une réponse de @hexafraction, il avait spécifié que x et y étaient en haut à droite, ce qui est faux, ceux-ci sont en haut à gauche.
J'ai également fourni la source s'il vous plaît vérifier.
public void setBounds(int x,
int y,
int width,
int height)
Déplace et redimensionne ce composant. Le nouvel emplacement du coin supérieur gauche est spécifié par x et y, et la nouvelle taille est spécifiée par la largeur et la hauteur. Cette méthode modifie les informations relatives à la présentation et, par conséquent, invalide la hiérarchie des composants.
Paramètres:
x - la nouvelle coordonnée x de ce composant
y - la nouvelle coordonnée y de cette composante
width - la nouvelle largeur de ce composant
hauteur - la nouvelle hauteur de ce composant
source: - setBounds
En fait, un composant Swing a plusieurs dimensions, comme:
SetBounds est un raccourci pour définir la taille actuelle et l'emplacement du widget si vous n'utilisez aucun gestionnaire de présentation.
Si vous utilisez un gestionnaire de disposition, il incombe à celui-ci de disposer vos composants en tenant compte de la taille préférée que vous avez définie et en veillant à ce que le comonent ne soit jamais plus petit que sa taille minimum ou plus grand que sa taille maximum.
Dans ce cas, le layoutManager appellera setSize (ou setBounds) et vous ne pouvez pas vraiment contrôler la position ou la dimension du composant.
L'intérêt d'utiliser un gestionnaire de disposition est de disposer d'une manière indépendante de la plate-forme et de la taille de la fenêtre de présenter vos composants automatiquement, vous ne devez donc pas appeler setSize à partir de votre code.
(Commentaire personnel: il existe des gestionnaires de mise en page buggy, je les hais tous personnellement et je me suis roulé, ce qui offre la flexibilité de MigLayout sans la courbe d'apprentissage.)
voici un court paragraphe de cet article Comment créer des cadres (fenêtres principales) - Le Java Tutorials - Oracle qui explique ce que fait la méthode setBounds en plus d'autres méthodes similaires :
La méthode de conditionnement dimensionne le cadre de sorte que tout son contenu soit égal ou supérieur à sa taille préférée. Une alternative à pack consiste à établir explicitement une taille de trame en appelant setSize ou setBounds (qui définit également l'emplacement de la trame) . En général, utiliser pack est préférable à appeler setSize, car ce dernier laisse le gestionnaire de disposition de trame responsable de la taille de la trame, et les gestionnaires de disposition sont très aptes à s’adapter aux dépendances de la plate-forme et à d’autres facteurs affectant la taille des composants.
les paramètres de setBounds sont (int x, int y, int width, int height) x et y définissent la position/emplacement et width et height définissent la taille/dimension du cadre.
La manière dont Java Swing UIs fonctionne est que pour chaque JPanel il y a toujours un LayoutManager qui décide où placer exactement vos composants. Chaque gestionnaire de disposition fonctionne différemment, donc si vous utilisez par exemple BorderLayout, setBounds () n'est pas utilisé par LayoutManager, mais le placement des composants est décidé par Est, Ouest, Sud, Nord et Centre.
Pour NullLayoutManager (si vous avez utilisé new JPanel(null)
), chaque composant doit toutefois avoir une coordonnée x et y. Stupid Sidenote: si votre interface utilisateur était en trois dimensions, il y aurait aussi une coordonnée z.
Donc, avec public void Component.setBounds(int x, int y, int width, int height)
, vous spécifiez où votre composant est placé et combien de pixels il est large et large.
Voici un exemple:
import Java.awt.Dimension;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class JTableInNullLayout
{
public static void main(String[] argv) throws Exception {
JPanel panel = new JPanel(null);
JLabel helloLabel = new JLabel("Hello world!");
helloLabel.setBounds( 10, 50, 60, 20 ); // x, y, width, height
panel.add(helloLabel);
JFrame frame = new JFrame();
frame.add(panel);
frame.setPreferredSize( new Dimension(200,200));
frame.pack();
frame.setVisible(true);
}
}