Je vois cela différemment de la réponse acceptée.
1) Dois-je éviter complètement l'utilisation de ces méthodes?
N'évitez jamais! Ils sont là pour exprimer les contraintes de taille de vos composants au gestionnaire de disposition. Vous pouvez éviter de les utiliser si vous n'utilisez aucun gestionnaire de mise en page et essayez de gérer la mise en page visuelle par vous-même.
Malheureusement, Swing ne vient pas avec des dimensions par défaut raisonnables. Cependant, au lieu de définir les dimensions d'un composant, il est préférable d'utiliser la POO pour descendre votre propre composant avec des valeurs par défaut raisonnables. (Dans ce cas, vous appelez setXXX dans votre classe descendante.) Vous pouvez également remplacer les méthodes getXXX pour le même effet.
2) Les méthodes ont été définies pour une raison. Alors, quand dois-je les utiliser? Dans quel contexte? À quelles fins?
Toujours. Lorsque vous créez un composant, définissez sa taille réaliste min / préférée / max en fonction de l'utilisation de ce composant. Par exemple, si vous avez un JTextField pour saisir des symboles de pays tels que le Royaume-Uni, sa taille préférée doit être aussi large pour contenir deux caractères (avec la police actuelle, etc.), mais il est probablement inutile de le laisser grossir. Après tout, les symboles de pays sont deux caractères. Comme ci-contre, si vous avez un JTextField pour entrer par exemple un nom de client, il peut avoir une taille préférée comme la taille de pixel pour 20 caractères, mais peut devenir plus grand si la mise en page est redimensionnée, alors définissez la taille maximale sur plus. Dans le même temps, avoir un JTextField large de 0px est inutile, alors définissez une taille minimale réaliste (je dirais la taille de pixel de 2 caractères).
3) Quelles sont exactement les conséquences négatives de l'utilisation de ces méthodes?
(Je ne peux que penser à ajouter de la portabilité entre des systèmes avec une résolution d'écran différente).
Pas de conséquences négatives. Ce sont des conseils pour le gestionnaire de mise en page.
4) Je ne pense pas qu'un LayoutManager puisse répondre exactement à tous les besoins de mise en page souhaités.
Dois-je vraiment implémenter un nouveau LayoutManager pour chaque petite variation de ma mise en page?
Non, absolument pas. L'approche habituelle consiste à mettre en cascade différents gestionnaires de mise en page de base tels que la mise en page horizontale et verticale.
Par exemple, la disposition ci-dessous:
<pre>
+--------------+--------+
| ###JTABLE### | [Add] |
| ...data... |[Remove]|
| ...data... | |
| ...data... | |
+--------------+--------+
</pre>
est d'avoir deux parties. Les parties gauche et droite sont une disposition horizontale. La partie droite est un JPanel ajouté à la disposition horizontale, et ce JPanel a une disposition verticale qui dispose les boutons verticalement.
Bien sûr, cela peut devenir délicat avec une mise en page réelle. Par conséquent, les gestionnaires de disposition basés sur une grille tels que MigLayout sont bien meilleurs si vous êtes sur le point de développer quelque chose de sérieux.
5) Si la réponse à 4 est "oui", cela ne conduira-t-il pas à une prolifération de classes LayoutManager qui deviendra difficile à maintenir?
Non, vous ne développerez certainement pas de gestionnaires de mise en page, sauf si vous avez besoin de quelque chose de très spécial.
6) Dans une situation où je dois définir des proportions ...
entre les enfants d'un composant (par exemple, enfant1 doit utiliser 10% de l'espace, enfant2 40%, enfant3 50%), est-il possible d'y parvenir sans implémenter un LayoutManager personnalisé?
Fondamentalement, une fois que les tailles préférées sont définies correctement, vous ne voudrez peut-être rien faire en pourcentage. Tout simplement, parce que les pourcentages sont inutiles (par exemple, il est inutile d'avoir un JTextField 10% de la taille de la fenêtre - car on peut réduire la fenêtre pour que JTextField ait une largeur de 0px, ou peut agrandir la fenêtre pour que le JTextField soit sur deux affichages sur un écran). configuration multi-affichage).
Mais, parfois, vous pouvez utiliser les pourcentages pour contrôler la taille des blocs de construction plus gros de votre interface graphique (panneaux, par exemple).
Vous pouvez utiliser JSplitPane où vous pouvez prédéfinir le rapport des deux côtés. Ou, vous pouvez utiliser MigLayout qui vous permet de définir ces contraintes en pourcentage, pixels et autres unités.
JEditorPane
avec HTML qui ne suggère pas lui-même une largeur. OTOH Je ne sais pas si j'ai raté quelque chose. J'examinerai attentivement les réponses sur le fil, mais je serais intéressé si vous aviez des commentaires, en particulier sur ce dernier cas.