Java, Swing: comment définir la largeur maximale d'une component swing jtextfield?
Je suis en train d'écrire un fichier personnalisé de sélection de composants. Dans mon INTERFACE, d'abord à l'utilisateur clique sur un bouton, qui apparaît un JFileChooser
; quand il est fermé, le chemin d'accès absolu du fichier sélectionné est écrit dans un JTextField
.
Le problème est, les chemins absolus sont généralement longs, ce qui provoque le champ de texte pour l'agrandir, la prise de son conteneur trop large.
J'ai essayé cela, mais il n'a rien fait, le champ de texte est encore trop large:
fileNameTextField.setMaximumSize(new java.awt.Dimension(450, 2147483647));
Actuellement, quand il est vide, il est déjà 400px long, car GridBagConstraints
attaché à elle.
J'aimerais qu'il soit comme les champs de texte dans les pages HTML, qui ont une taille fixe et de ne pas agrandir lorsque l'entrée est trop long.
Alors, comment puis-je configurer la taille maximale pour un JTextField
?
OriginalL'auteur Leonel | 2008-09-24
Vous devez vous connecter pour publier un commentaire.
Elle dépend de la mise en page du gestionnaire de votre champ de texte. Certains gestionnaires de disposition d'élargir et d'autres pas. Certains s'étendre uniquement dans certains cas, c'est toujours les autres.
Je suis en supposant que vous êtes en train de faire
Si si, pour la plupart raisonnable mises en page, le terrain ne doit pas changer de taille (au moins, il ne devrait pas pousser). Souvent, les gestionnaires de disposition se comportent mal lors de la mise en
JScrollPane
s.Dans mon expérience, en essayant de contrôler la taille via
setMaximumSize
etsetPreferredWidth
et ainsi de suite sont au mieux précaire. Swing a décidé de sa propre avec le layout manager et il ya peu que vous pouvez faire à ce sujet.Tout cela étant dit, je n'ai pas eu le problème que vous rencontrez, ce qui m'amène à croire que certains l'utilisation judicieuse d'un gestionnaire de présentation permettra de résoudre le problème.
OriginalL'auteur davetron5000
J'ai résolu ce problème en définissant la largeur maximale sur les contenants de la zone de texte, à l'aide de
setMaximumSize
.Selon davetron réponse, c'est un fragile de la solution, car le layout manager peut ignorer que la propriété. Dans mon cas, le conteneur est le plus haut, et dans un premier test, il a travaillé.
OriginalL'auteur Leonel
Ne pas régler les tailles sur le champ de texte. Au lieu de définir la taille de la colonne à une valeur non nulle par setColumns ou en utilisant le constructeur avec la colonne argument.
Ce qui se passe, c'est que la taille par défaut signalé par le JTextComponent lorsque les colonnes à zéro est la totalité de la quantité d'espace nécessaire pour rendre le texte. Lorsque les colonnes est définie à une valeur non nulle, la taille préférée est la taille nécessaire à montrer que de nombreux standard de la largeur des colonnes. (pour une variable de police de hauteur, il est généralement proche de la taille de la minuscule "m"). Avec des colonnes de mettre à zéro le champ de texte demande autant d'espace qu'il peut obtenir et qui s'étend à l'ensemble du conteneur.
Depuis que vous l'avez déjà dans un GridBagLayout avec un fond, vous pourriez probablement juste de définir les colonnes 1 et laissez-le remplir de l'étirer sur la base des autres composants, ou de quelques autres assez faible nombre.
FlowLayout
.OriginalL'auteur shemnon