Placer un JLabel à une coordonnée x,y sur un Composite
Je suis en train de placer une série de JLabels à des coordonnées X et Y sur un Composite (et de définir la hauteur et la largeur, trop). Peu importe ce que je fais, chaque étiquette vents immédiatement à droite de l'étiquette précédente et a exactement la même taille que les autres.
Pour l'instant, mon Composite est dans une Grille de Mise en page. J'ai essayé la Disposition Absolue (argument illégal exception des résultats), Conception Libre (sans étiquettes), la Disposition de Flux (tout est serré au centre), et quelques autres.
Pas sûr de ce que je dois faire pour faire ce travail. Quelqu'un peut-il aider? Merci!
JLabel lbl1 = new JLabel("label 1");
JLabel lbl2 = new JLabel("label 2");
JLabel lbl3 = new JLabel("label 3");
JLabel lbl4 = new JLabel("label 4");
JLabel lbl5 = new JLabel("label 5");
myPanel.add(lbl1);
myPanel.add(lbl2);
myPanel.add(lbl3);
myPanel.add(lbl4);
myPanel.add(lbl5);
lbl1.setLocation(27, 20);
lbl2.setLocation(123, 20);
lbl3.setLocation(273, 20);
lbl4.setLocation(363, 20);
lbl5.setLocation(453, 20);
lbl1.setSize(86, 14);
lbl2.setSize(140, 14);
lbl3.setSize(80, 14);
lbl4.setSize(80, 14);
lbl5.setSize(130, 14);
Vous devez définir votre conteneur de Mise à null
Ack! C'était à propos de la seule mise en page que je n'ai pas essayer. Merci! Si vous saisissez cela comme une réponse, je vais le marquer comme acceptée.
Je vais le faire. merci
"je suis en train de placer une série de JLabels à des coordonnées X et Y sur un Composite" Pourquoi?
la plupart probablement vous ne pas vous voulez manuellement la taille/localiser tous les enfants d'un conteneur - c'est la tâche exclusive d'un LayoutManager. Donc, votre tâche à apprendre des comportements différents de leurs implémentations et choisissez celui qui correspond à vos besoins
myPanel.setLayout(null);
Ack! C'était à propos de la seule mise en page que je n'ai pas essayer. Merci! Si vous saisissez cela comme une réponse, je vais le marquer comme acceptée.
Je vais le faire. merci
"je suis en train de placer une série de JLabels à des coordonnées X et Y sur un Composite" Pourquoi?
la plupart probablement vous ne pas vous voulez manuellement la taille/localiser tous les enfants d'un conteneur - c'est la tâche exclusive d'un LayoutManager. Donc, votre tâche à apprendre des comportements différents de leurs implémentations et choisissez celui qui correspond à vos besoins
OriginalL'auteur Alex | 2012-08-25
Vous devez vous connecter pour publier un commentaire.
Vous devez définir votre conteneur de Mise à null:
Est cependant un bon conseille également de jeter un oeil à la Matisse le Gestionnaire de configuration, je suppose qu'il est appelé GroupLayout maintenant. Le principal problème avec le positionnement absolu est ce qui arrive quand les changements de fenêtre de sa taille.
null
mise en page est le plus souvent un très mauvaise idée.Oui je suis d'accord que l'utilisation d'un null mise en page est une mauvaise idée en général. Toutefois envisager des applications qui fixe la taille de la fenêtre ou de certains d'entre eux fonctionnent dans les systèmes embarqués qui exécute la même application. Dans ce cas, probablement organiser les composants avec une mise en page pourrait être simplement plus de travail et de la mémoire. Ce qui concerne
"probablement organiser les composants avec une mise en page pourrait être tout travail supplémentaire" Jusqu'à ce que le point le client regarde l'INTERFACE utilisateur, fronce les sourcils dans la concentration, et dit, "Déplacer le bouton 'OK' de ci-dessous ci-dessus les cases à cocher".
..ou "ajouter une barre de défilement".
probablement que c'est un problème différent ou à la suite de la mauvaise analyse ou de conception de processus, Mais il s'éloigne de la vraie question: "mise en place d'un JLabel à une coordonnée x,y sur un Composite". Je n'ai pas toutes les informations contextuelles que l'interlocuteur a à critiquer la façon dont il est en train de faire des choses ou pourquoi il est fait de cette façon.
OriginalL'auteur gersonZaragocin
Mettre le récipient de la présentation du gestionnaire de null en appelant
setLayout(null)
.Appeler le Composant de la classe
setbounds
méthode pour chaque conteneur des enfants.Appel de la classe de la méthode repaint.
Remarque:
La création de contenants en position absolue, les conteneurs peuvent causer des problèmes si la fenêtre contenant le conteneur est redimensionné.
Consulter ce lien:
http://docs.oracle.com/javase/tutorial/uiswing/layout/none.html
upvote parce @kleopatra voté en bas
OriginalL'auteur Vinesh
Gestionnaires de disposition sont utilisés pour déterminer automatiquement la disposition des composants dans un conteneur. Si vous voulez mettre des composants à des coordonnées spécifiques endroits, alors vous ne devriez pas utiliser un layout manager.
ou
OriginalL'auteur Kevin Reid
Mon conseil est d'utiliser un IDE comme NetBeans avec son éditeur de l'interface. Pour inspecter le code et parce qu'il y a de nombreuses façons:
Réglage de la mise en page du gestionnaire, ou pour le positionnement absolu de faire un myPanel.setLayout(null), dispose de plusieurs influences.
En général, en supposant que vous effectuez vos appels dans le constructeur d'une JFrame, vous pouvez appeler
pack()
pour démarrer le layouting.Puis, à chaque mise en page utilise le gestionnaire de sa propre mise en œuvre de
add(Component)
ouadd(Component, Constraint)
. BorderLayout d'utilisation est à ajouter(étiquette, BorderLayout.CENTRE) et ainsi de suite.OriginalL'auteur Joop Eggen
OriginalL'auteur isra israel
Vous pouvez utiliser votre propre méthode d'appeler par setSize, setLocation valeurs directement....! `
Ainsi, je vous montre comment utiliser JProgress Bar
OriginalL'auteur Risith Ravisara