2010-09-29 42 views
0

J'ai récemment rencontré un problème nécessitant un champ qui peut envelopper le texte et augmenter la hauteur de la ligne au fur et à mesure que le texte est enveloppé, comme dans Microsoft Excel. J'ai réussi à le faire fonctionner correctement, le seul problème est que la table contient plusieurs JComboBox. Lorsque la hauteur de la ligne augmente à partir du champ qui enveloppe le texte, la taille de la fenêtre JComboBox et ArrowButton augmentent également. J'utilise un DefaultCellEditor pour les champs JComboBox et j'ai créé mon propre éditeur/rendu pour l'utiliser avec le champ JTextArea. Une fois que la valeur de JComboBox est sélectionnée, la valeur s'affiche correctement dans le champ, le seul problème est que lorsque je sélectionne la valeur, la fenêtre JComboBox et le bouton Arrow peuvent être ÉNORMES en fonction de la taille de la ligne. Est-il possible d'augmenter la hauteur de la ligne, mais la hauteur du champ JComboBox reste-t-elle la même au lieu de croître pour remplir la colonne dans laquelle elle se trouve? Je pense que je pourrais avoir besoin de faire un éditeur de cellule personnalisé pour les champs JComboBox aussi bien au lieu d'utiliser la valeur par défaut. Merci d'avance!Problème de dimensionnement de JComboBox dans une table avec des cellules multilignes

Répondre

0

Je pense que je pourrais avoir besoin de faire un éditeur de cellule sur mesure pour les champs JComboBox aussi bien au lieu d'utiliser la par défaut

Cela serait probablement la solution puisque la taille de l'éditeur est déterminée par la taille de la cellule.

Je voudrais essayer d'utiliser un JPanel avec un BorderLayout comme composant de l'éditeur. Ensuite, vous ajoutez votre éditeur au nord du panneau.

Ce serait l'éditeur le plus facile à créer puisque tous les événements de la souris et les événements clés sont passés à l'éditeur je crois, ce qui signifie que le panneau obtiendra les événements, pas la liste déroulante. Donc je suppose que vous devriez transférer ces événements dans la zone de liste déroulante.

+0

Merci beaucoup pour votre réponse. J'ai pu faire en sorte que l'éditeur regarde comment je voulais que ça se passe, mais je suis confronté à des problèmes de tabulation à travers la table. Si je suis dans la zone de liste déroulante et appuyez sur l'onglet, il tabule hors de la table et sur le premier champ activé sur le panneau qui contient la table. En outre, si je clique sur la cellule où se trouve la zone de liste déroulante, les choses semblent fonctionner correctement, cependant si je clique sur la cellule où se trouve la zone de liste, ComboBox semble avoir des problèmes. Je pense que cela peut avoir quelque chose à voir avec "transmettre ces événements à la zone de liste déroulante." –

0

D'abord, est le JComboBox dans BorderLayout et défini sur BorderLayout.CENTER? Si oui, je le changerais en une autre disposition telle que AbsoluteLayout afin qu'il ne s'étire pas pour remplir la cellule.

De plus, je vais aussi vous référer à ce poste Putting JComboBox into JTable